unapply
整数のチェックが10未満であるという単純なものがあります
object MatchLess {
def unapply(i: Int): Option[Int] = if ( i < 10 ) Some(i) else None
}
// so this prints
// 7 8 9 . . .
for ( i <- 7 to 12 ) i match {
case MatchLess(x) => print(x + " ") // line 8
case _ => print(". ")
}
unapply
構文について疑問が1つありますcase
。8行目で、値x
が実際に両側に表示されているのは=>
なぜですか。コンパイラがこのような割り当てを暗黙的に追加すると想定できますか?
// ...
case /* val x = i */ MatchLess(x) => print(x + " ") // line 8