在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)

results matching ""

    No results matching ""