大小写的语法意义何时?
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