是否可以在密封案例类声明中将保护条件与模式匹配结合起来?
我意识到它可以在匹配块中包含保护条件,但我认为在密封案例类中预先定义这些条件是有益的。这将允许开发人员定义一组严格的可能输入,编译器将在模式匹配时检查这些输入。
所以总而言之,我希望能够做类似这样的事情:
// 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
}
}