gpt4 book ai didi

scala - 为什么大写字母不能用于定义值的模式匹配?

转载 作者:行者123 更新时间:2023-12-04 14:42:08 25 4
gpt4 key购买 nike

为什么我可以使用小写字母作为名称:

val (a, bC) = (1, 2)

(1, 2) match {
case (a, bC) => ???
}

并且不能使用大写字母:
/* compile errors: not found: value A, BC  */
val (A, BC) = (1, 2)

/* compile errors: not found: value A, BC */
(1, 2) match {
case (A, BC) => ???
}

我正在使用 scala-2.11.17

最佳答案

因为 Scala 的设计者更喜欢允许像这样使用以大写字母开头的标识符(并且允许两者都会混淆):

val A = 1

2 match {
case A => true
case _ => false
} // returns false, because 2 != A

请注意,使用小写字母,您将得到
val a = 1

2 match {
case a => true
case _ => false
} // returns true

因为 case a绑定(bind)一个名为 a 的新变量.

一种非常常见的情况是
val opt: Option[Int] = ...

opt match {
case None => ... // you really don't want None to be a new variable here
case Some(a) => ...
}

关于scala - 为什么大写字母不能用于定义值的模式匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35217913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com