Scala语法奇怪与::并要求小写

da_*_*101 6 syntax scala

这应该发生吗?

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
           ^
Run Code Online (Sandbox Code Playgroud)

它似乎区分大小写.错误或"功能"?

Chr*_*tin 5

它区分大小写.在匹配模式中,以大写字母开头(或由反引号引用)的标识符被视为对定义值的引用,而不是新绑定.

这让很多人感到意外,而且阅读Scala语言规范并不是很明显.最相关的位是" 可变模式 "......

变量模式x是一个简单的标识符,以小写字母开头.它匹配任何值,并将变量名称绑定到该值.

......和" 稳定的标识符模式 ":

要解决与变量模式的语法重叠,稳定的标识符模式可能不是以小写字母开头的简单名称.

相关问题: