在以下代码中
val x = 5
val y = 4 match {
case x => true
case _ => false
}
值y
为真。 Scala将x
解释为模式匹配中的自由变量,而不是将其绑定到范围内具有相同名称的变量。
如何解决这个问题?
答案 0 :(得分:12)
反引变量表示绑定一个范围变量:
val x = 5
val y = 4 match { case `x` => true; case _ => false }
返回false
。
或者,如果变量以大写字母开头,则它绑定到范围变量而不进行反引号。
答案 1 :(得分:7)
调用最少惊讶原则,我只会这样做:
val x = 5
val y = 4 match {
case z if z == x => true
case _ => false
}