パターン マッチング構造を連鎖できないのはなぜですか? たとえば、以下は無意味であるとしても合法です。
val a = ADT(5)
val b = a match {
case ADT(a) if a > 4 => ADT(a * 3)
case ADT(a) => ADT(a + 1)
}
b match {
case ADT(a) if a > 13 => doSomething(a)
case _ => {}
}
しかし、以下はそうではありません:
a match {
case ADT(a) if a > 4 => ADT(a * 3)
case ADT(a) => ADT(a + 1)
} match {
case ADT(a) if a > 13 => doSomething(a)
case _ => {}
}
そもそもやるべきではないからだと思いますが、原則として、合法ではない理由がわかりません。