ron*_*ron 5 scala bind pattern-matching
在以下代码中
val x = 5
val y = 4 match {
case x => true
case _ => false
}
Run Code Online (Sandbox Code Playgroud)
价值y是真的.Scala解释x为模式匹配中的自由变量,而不是将其绑定到范围中具有相同名称的变量.
如何解决这个问题呢?
ron*_*ron 12
对变量进行反斜杠表示绑定一个范围变量:
val x = 5
val y = 4 match { case `x` => true; case _ => false }
Run Code Online (Sandbox Code Playgroud)
回报false.
或者,如果变量以大写字母开头,则它绑定到范围变量而不进行反向操作.
援引最不惊讶的原则,我将简单地做:
val x = 5
val y = 4 match {
case z if z == x => true
case _ => false
}
Run Code Online (Sandbox Code Playgroud)