在模式匹配中,Scala总认为首字母大写的标识符为常量
2016-07-22 本文已影响152人
浑身演技
在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