在Java或C++中,我们将表达式和语句看作两样不同的东西。表达式有值,而语句执行动作。在Scala中,几乎所有构造出来的语法结构都有值。
条件表达式
在Scala中if/else表达式有值
if (x>0) 1 else -1
可以将if/else表达式的值赋值给变量
val s=if (x>0) 1 else -1
混合类型的if/else表达式,类型是两个分支类型的公共超类型
if (x>0) "positive" else -1
不带else的if语句
if (x>0) 1
等同于
if(x>0) 1 else ()
()表示“无有用值”的占位符,可以视为Java或C++中的void
语句终止
在Java和C++中,每个语句都以分号结束。
在Scala中,行尾位置不需要分号。如果,你想在单行写下多个语句,需要使用分号隔开
if (n>0) {r=r*n;n-=1}
如果要写较长的语句,需要分两行来写的话,确保第一行以不能用作语句结尾的符号结尾
s=s0+(v-v0)*t+
0.5*(a-a0)*t*t
块表达式和赋值
在Scala中,{}块包含一系列表达式,其结果也是一个表达式。块中最后一个表达式的值就是块的值。
val distance={val dx=x-x0;val dy=y-y0;sqrt(dx*dx+dy*dy)}
Scala中,赋值动作本身是没有值的,或者说它的值是Unit类型,也就是()
由于赋值语句的值是Unit类型,则不要将它们串接
x=y=1
输入输出
println("Answer:"+42)
格式化字符串
printf("Hello,%s! You are %d years old.\n","Fred",42)