当我在Scala中使用以caps为模式匹配的变量时,会产生编译错误。 这是一个样式问题,我不明白为什么这是一个编译错误。在Scala中使用Caps模式匹配变量
以下片段报告“错误:找不到:值名称”。
val pair = Tuple2(1,"abc") val (key, Name) = pair
但是,下面的工作:
val pair = Tuple2(1,"abc") val (key, name) = pair
当我在Scala中使用以caps为模式匹配的变量时,会产生编译错误。 这是一个样式问题,我不明白为什么这是一个编译错误。在Scala中使用Caps模式匹配变量
以下片段报告“错误:找不到:值名称”。
val pair = Tuple2(1,"abc") val (key, Name) = pair
但是,下面的工作:
val pair = Tuple2(1,"abc") val (key, name) = pair
这不是风格,虽然时尚。
scala> val pair = Tuple2(1,"abc"); val (key, Name) = pair
<console>:7: error: not found: value Name
val pair = Tuple2(1,"abc"); val (key, Name) = pair
^
scala> val pair = Tuple2(1,"abc"); val Name = "abc" ; val (key, Name) = pair
pair: (Int, String) = (1,abc)
Name: String = abc
key: Int = 1
模式是一个模式:
scala> (1,"abc") match { case (key, Name) => key }
res0: Int = 1
scala> (1,"abc") match { case (key, Fame) => key }
<console>:11: error: not found: value Fame
(1,"abc") match { case (key, Fame) => key }
^
但是,这是一种良好的一个,因为某些原因。
http://www.scala-lang.org/files/archive/spec/2.11/08-pattern-matching.html#variable-patterns
模式表达式使用每个标识符的第一个字母的情况下,以确定它是否是一个新VAL声明或现有VAL的引用。这是Scala语法的一个丑陋怪癖(尽管如果你坚持既定的命名约定,你就不会碰到它)。
[如何将匹配模式匹配成大写变量?](http://stackoverflow.com/questions/12636972/how-to-pattern-match-into-an-uppercase-variable) – 2014-10-11 22:52:59