Scala程序里,语句末尾的分号通常是可选的。愿意可以加,若一行里仅有一个语句也可以不加。不过,如果一行包含多条语句时,分号则是必须的:
val s = “hello”; println(s);
输入跨越多行的语句时,多数情况无须特别处理,scala将在正确的位置分隔语句。例如:
if(x < 2) Println(“too small”)else println(“ok”)
然而,偶尔scala也许并不如你所愿,把句子分拆成两部分:
x+ y
这会被当做两个语句x和+y。如果希望把它作为一个语句 x + y,可以把它放在括号里:
(x+y)
或者也可以把 + 放在行末,也正源于此,串接类似于+这样的中缀操作符的时候,scala通常的风格是把操作符放在行尾而不是行头:
z + y +z
分号推断的规则
分割语句的具体规则既出人意料地简单又非常有效。那就是,除非以下情况的一种成立,否则行尾被认为是一个分号:1. 疑问行由一个不能合法作为语句结尾的字结束,如句点或中缀操作符。2. 下一行开始于不能作为语句开始的词。3. 行结束于括号(......)或方框[......]内部,因为这些符号不可能容纳多个语句。