大小写的语法意义何时?

A /的情况下,不case情况。

显然case a匹配任何东西并将其绑定到名称a ,而case A查找A变量并匹配任何==认为等于A 。 这对我来说是一个惊喜, 虽然我知道Scala区分大小写,但我从来没有想过标识符大小写会影响解析规则。

Scala的语法通常会关注标识符的情况,还是只有少数情况会发生? 如果只有少数这样的背景,它们是什么? 我在Google上找不到任何内容; 我得到的只是模式匹配的结果。


还有一种本质上相似的称为类型模式。 在一个类型模式中,一个以小写字母开头的简单标识符是一个类型变量,而其他所有其他类型都试图匹配实际类型( _除外)。

例如:

val a: Any = List(1, 2, 3)
val c = 1

// z is a type variable
a match { case b: List[z] => a }

// Type match on `Int`
a match { case b: List[Int] => a }

// type match on the singleton c.type (not a simple lower case identifier)
// (doesn't actually compile because c.type will never conform)
a match { case b: List[c.type] => a }

类似于第一个例子的类型匹配是鲜为人知的,因为它很难被使用。

链接地址: http://www.djcxy.com/p/95605.html

上一篇: When is case syntactically significant?

下一篇: Serverless web socket server?