我正在学习Scala编程语言,并对此感到困惑:
var set = Set("hello", "world")
set += "Tom"
println(set)
println(set += "Tom")
第一次打印将输出
Set(hello, world, Tom)
但第二个会输出
()
那么,为什么他们不同,我认为println(set += "Tom")
会先做set += "Tom"
,然后打印出结果?不是吗?
答案 0 :(得分:5)
scala a += b
dessugars to a = a + b
。赋值表达式的类型是Unit。因此,与C或Java不同,赋值表达式的结果不会导致左侧但是单位值。
答案 1 :(得分:1)
正如@pedrofurla已经回答的那样,第二个印刷品显示评估作业的结果,即用Unit
表示的()
。
另外,请注意,我们可以打印评估由大括号
分隔的以下块的结果println( {set += "Tom" ; set} )
Set(hello, world, Tom)
即,将"Tom"
添加到set
作为第一个表达式,然后将更新后的set
作为块评估的最终结果。