在模式匹配中,Scala总认为首字母大写的标识符为常量

在Scala模式匹配中,标识符首字母大写有个优点:首字母大写的标识符将会认为是值进行匹配,而不是认为是一个变量绑定。

以下代码的执行结果是什么?

var IJ : (Int , Int) = (3 , 4)
var (I , J) : (Int , Int) = (3 , 4)

A:输出结果

IJ : (Int , Int) = (3 , 4)
I : Int = 3
J : Int =4

B:两条语句都编译失败
C:

第一条语句输出结果:

IJ : (Int , Int) = (3,4)

第二条语句编译失败

D:

第一条语句输出结果:

IJ : (Int , Int) = (3,4)

第二条语句抛出 runtime exception。

答案: C
解释:
前一条语句元组赋值给IJ,类型是正确的。后一条语句试图将元组(3 , 4)赋值给两个常量I和J,导致编译失败。
此题翻译自UPSTAIRS downstairs

你可能感兴趣的:(在模式匹配中,Scala总认为首字母大写的标识符为常量)