«Соответствие» паттерну соответствия шаблона
Почему невозможно связать конструкции соответствия шаблону? Например, следующее законно, если бессмысленно,
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 _ => {}
}
Я подозреваю, что это потому, что я не должен был делать это в первую очередь, но в принципе я не понимаю, почему это не законно.