Образец соответствия для переменной в области видимости (Scala) - PullRequest
5 голосов
/ 20 июля 2011

В следующем коде

val x = 5
val y = 4 match {
  case x => true
  case _ => false
}

значение y истинно. Scala интерпретирует x как свободную переменную в сопоставлении с образцом вместо привязки ее к переменной с тем же именем в области видимости.

Как решить эту проблему?

Ответы [ 2 ]

12 голосов
/ 20 июля 2011

Если поставить галочку напротив переменной, это означает привязку переменной области:

val x = 5
val y = 4 match { case `x` => true; case _ => false }

возвращает false.

В качестве альтернативы, если переменная начинается с заглавной буквы, она привязывается к переменной областибез обратной помехи.

7 голосов
/ 20 июля 2011

Призвав принцип наименьшего удивления , я просто сделаю:

val x = 5
val y = 4 match {
  case z if z == x => true
  case _ => false
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...