In the following code
val x = 5
val y = 4 match {
case x => true
case _ => false
}
the value y
is true. Scala interprets x
to be a free variable in the pattern match instead of binding it to the variable with the same name in the scope.
How to solve this problem?
Backticking the variable indicates to bind a scoped variable:
val x = 5
val y = 4 match { case `x` => true; case _ => false }
returns false
.
Alternatively, if a variable starts with an uppercase letter, it binds to a scoped variable without backticking.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With