在Scala中,任何表达式都是有值的,这是其语言特性中比较特殊的地方,主要体现在一下三个方面:
(1)if else条件表达式的值是每个分支的最后一行代码的结果:
print(if(1 > 2) 1 else 2) --2
print(if(true) println(1) else print(2)) --()
(2)一般情况下,for循环和while循环表达式的值是Unit:
var t = for(i <- 1 to 5){print(i)}
print(t)
var i = 1
var k = while(i <= 3){print(i);i+=1}
print(k)
结果都是()
但是for循环推导式是有返回值的:
val res = for(i <- 1 to 10) yield i
println(res)
//输出
Vector(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
(3)赋值语句的返回值是是Unit(在Java中是可以连续复制的)
val a = b = c
//等价于
val a = (b = c)