封印されたケースクラス宣言内でガード条件とパターンマッチングを組み合わせることができますか?
マッチブロック内にガード条件を含めることは可能だと思いますが、この条件を封印されたケースクラスで事前に定義することは有益だと思います。これにより、開発者は、パターンマッチング時にコンパイラがチェックする可能性のある入力の厳密なセットを定義できます。
要約すると、私は次のようなことと同等のことを実行できるようにしたいと思います。
// create a set of pattern matchable cases with guards built in
sealed abstract class Args
case class ValidArgs1(arg1:Int,arg2:Int) if arg1>1 && arg2<10 extends Args
case class ValidArgs2(arg1:Int,arg2:Int) if arg1>5 && arg2<6 extends Args
case class InvalidArgs(arg1:Int,arg2:Int) if arg1<=1 && arg2>=10 extends Args
// the aim of this is to achieve pattern matching against an exhaustive set of
// pre-defined possibilities
def process(args:Args){
args match
{
case ValidArgs1 = > // do this
case ValidArgs2= > // do this
case InvalidArgs = > // do this
}
}