新的控制语法
Scala 3 具有新的“安静”控制表达式语法,它不依赖于将条件括在括号中,并且还允许在 for
表达式的生成器周围删除括号或大括号。示例
if x < 0 then
"negative"
else if x == 0 then
"zero"
else
"positive"
if x < 0 then -x else x
while x >= 0 do x = f(x)
for x <- xs if x > 0
yield x * x
for
x <- xs
y <- ys
do
println(x + y)
try body
catch case ex: IOException => handle
详细规则如下
- 如果
if
表达式的条件后跟then
,则可以不使用括号编写该条件。 - 如果
while
循环的条件后跟do
,则可以不使用括号编写该条件。 - 如果
for
表达式的枚举器后跟yield
或do
,则可以不使用括号或大括号编写这些枚举器。 for
表达式中的do
表示for
循环。catch
后面可以跟在同一行上的单个 case。如果有多个 case,则必须将它们放在大括号中(就像在 Scala 2 中一样)或缩进块中。
重写
Scala 3 编译器可以将源代码从旧语法重写为新语法,反之亦然。当使用选项 -rewrite -new-syntax
调用时,它将从旧语法重写为新语法,在条件和枚举器中删除括号和大括号。当使用选项 -rewrite -old-syntax
调用时,它将反向重写,根据需要插入括号和大括号。
本文中