在下面的代碼在範圍(Scala的)可變模式匹配
val x = 5
val y = 4 match {
case x => true
case _ => false
}
值y
是真實的。 Scala將x
解釋爲模式匹配中的自由變量,而不是將其綁定到範圍中具有相同名稱的變量。
如何解決這個問題?
在下面的代碼在範圍(Scala的)可變模式匹配
val x = 5
val y = 4 match {
case x => true
case _ => false
}
值y
是真實的。 Scala將x
解釋爲模式匹配中的自由變量,而不是將其綁定到範圍中具有相同名稱的變量。
如何解決這個問題?
Backticking該變量指示一個範圍的變量綁定:
val x = 5
val y = 4 match { case `x` => true; case _ => false }
返回false
。
或者,如果一個變量以大寫字母開頭,它將綁定到範圍變量而不反錯。
另請參閱http://scala-programming-language.1934581.n4.nabble.com/scala-pattern-matching-proposal-td1999364.html – ron
爲什麼可以複製現有的問題,然後自己回答這個問題? http://stackoverflow.com/questions/6172557/problem-with-scala-matching-scope http://stackoverflow.com/questions/5153590/why-does-scala-complain-when-given-this- pattern-match-on-an-value- – dhg
@dhg:我在SO上找不到這個問題,這就是爲什麼。我回答我自己的問題,因爲我更喜歡使用SO作爲知識庫,而不是在我的小型隱藏博客上留言或發表心理帖子。感謝您的鏈接,我同意以重複結束。 – ron