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

时间:2015-07-28 08:54:14

标签: scala syntax

这应该发生吗?

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;?

2 个答案:

答案 0 :(得分:5)

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

这让很多人感到惊讶,而且阅读Scala语言规范并不是很明显。最相关的位是“variable patterns”......

  

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

...和“stable identifier patterns”:

  

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

相关问题:

答案 1 :(得分:2)

功能:)

::是一种模式匹配形式。在Scala中,以小写开头的变量用于应该由匹配绑定的变量。以大写字母开头的变量(或用反引号括起来的)用于现有的变量,这些变量用作要匹配的模式的一部分。