考虑下面的代码:
val first = ...
val second = ...
val third = ...
val fours = ...
first match {
case "someString" => second match {
case s:String => third match {
case MyEnum.A => //some logic
case MyEnum.B => fours match {
case Some(old:String) => //some other logic
case default=> defaulLogic
}
case default=> defaulLogic
}
case default=> defaulLogic
}
case default=> defaulLogic
}
private def defaulLogic()= {
//log error here
}
有没有办法放
case default
逻辑到一个地方而不是在每个模式匹配中复制它?备注
只有顶部
match-case
声明,其实还有更多的情况。
最佳答案
我会重写代码以使其更易于阅读:
(first, second, third, fours) match {
case ("something", s: String, MyEnum.A, _) => //some logic
case ("something", s: String, MyEnum.B, Some(old)) => //some other logic
case _ => defaulLogic
}
如果你这样写,default case 会用更自然的方式写出来。
关于scala - scala 是否支持多个模式匹配的一个默认子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30476770/