2015-03-31 73 views

回答

2

这不声明一个变量名为1

val 1 = ONE 

它能做什么,而不是为模式匹配 - 其结果是没有用的。

试试这个,你会得到一个模式匹配错误:在斯卡拉

def ONE = 2 
val 1 = ONE 

变量不能有只包含数字的名称,或以数字开头。您无法声明名称为1的变量。

+0

但是我也可以写'var 1 = ONE'。这是一个误导性的语法。 – barbara 2015-03-31 18:25:04

+1

与'val 1 = ONE'(模式匹配,没有声明变量)的作用相同。 – Jesper 2015-03-31 18:26:28

+0

这很有趣。 – barbara 2015-03-31 18:31:49

0

Jesper表示它是模式匹配。考虑这个代码类似于你的:

def ONE_AND_TWO = (1, 2) 
val (1, b) = ONE_AND_TWO 
println(b) // prints 2 
val (2, _) = ONE_AND_TWO //scala.MatchError: (1,2) (of class scala.Tuple2$mcII$sp) 

在你的情况下,你只有一个值而不是元组。如果你想尽可能地将变量,数值或函数命名为接近1,你可以使用:

def `1` = ONE