我有一个简单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
:为什么在case
第 8 行中,值x
实际上在=>
? 我可以假设编译器隐式添加了这样的赋值吗?
// ...
case /* val x = i */ MatchLess(x) => print(x + " ") // line 8