这应该发生吗?
scala> val myList = List(42)
myList: List[Int] = List(42)
scala> val s2 :: Nil = myList
s2: Int = 42
scala> val S2 :: Nil = myList
<console>:8: error: not found: value S2
val S2 :: Nil = myList
^
似乎区分大小写。错误或&#39;功能&#39;?
答案 0 :(得分:5)
区分大小写。在匹配模式中,以大写字母开头的标识符(或由反引号引用)被视为对定义值的引用,而不是新绑定。
这让很多人感到惊讶,而且阅读Scala语言规范并不是很明显。最相关的位是“variable patterns”......
变量模式 x 是一个简单的标识符,以小写字母开头。它匹配任何值,并将变量名称绑定到该值。
...和“stable identifier patterns”:
要解决与变量模式的语法重叠,稳定的标识符模式可能不是以小写字母开头的简单名称。
相关问题:
答案 1 :(得分:2)
功能:)
::
是一种模式匹配形式。在Scala中,以小写开头的变量用于应该由匹配绑定的变量。以大写字母开头的变量(或用反引号括起来的)用于现有的变量,这些变量用作要匹配的模式的一部分。