scala - 什么时候大小写在语法上很重要?

标签 scala case-sensitive

一个案例,不是 case案子。

显然 case a 匹配任何内容并将其绑定(bind)到名称 a , 而 case A 寻找 A变量并匹配任何内容==认为等于 A .这让我很惊讶。虽然我知道 Scala 区分大小写,但我从没想过标识符大小写会影响解析规则。

Scala 的语法关心标识符的大小写是否很常见,还是只有少数上下文会发生这种情况?如果只有少数这样的上下文,它们是什么?我在谷歌上找不到任何东西;我得到的只是关于模式匹配的结果。

最佳答案

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

例如:

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 }

像第一个示例这样的类型匹配鲜为人知,因为它几乎不被使用。

关于scala - 什么时候大小写在语法上很重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42798498/

相关文章:

scala - 符号 :+: in Scala? 的含义

scala - 在 Scala 中编写斐波那契函数的最快方法是什么?

c# - 在 MySql 中保持文本大小写

postgresql - Postgres 区分大小写 : Implications of Lower()

jQuery .attr() 似乎区分大小写

没有小写的 PostgreSQL tsearch2

Scala:是否可以使用宏注释来注释类的构造函数字段? (宏观天堂)

scala - 如何在 Akka Actor 中实现接收()

scala - 版本冲突 : some are suspected to be binary incompatible

python - 如何将 Unicode 转换为大写进行打印?