中括弧

if の条件の部分は小括弧を中括弧に出来ないっぽい。

while も出来ないっぽい。
for とかは出来るのに。
逆に match は中括弧じゃないと駄目みたい。

scala> { for { i <- 1 to 3 } yield (i) } foreach print
123

scala> def inc(a: Int) = a + 1
inc: (a: Int)Int

scala> inc(
     |   3
     | )
res1: Int = 4

scala> inc {
     |   3
     | }
res2: Int = 4

scala> 1.to {
     |   2 + 3
     | } foreach print
12345

scala> if (2 < 3) (2 + 2) else (4 - 5)
res9: Int = 4

scala> if { 2 < 3 } (2 + 2) else (4 - 5)
<console>:1: error: '(' expected but '{' found.
       if { 2 < 3 } (2 + 2) else (4 - 5)
          ^
scala> var i = 0
i: Int = 0

scala> while (i < 6) (i = i + 1)

scala> while { i < 6 } (i = i + 1)
<console>:1: error: '(' expected but '{' found.
       while { i < 6 } (i = i + 1)
             ^
scala> i match (
<console>:1: error: '{' expected but '(' found.
       i match (
               ^

関数/メソッド呼び出しと for が特殊なんだな、きっと。


優先度の括弧にも中括弧が使えるっぽい。

scala> { 1 + 2 } * 3
res0: Int = 9

scala> {2 * (3 + 4) + 5} * 6
res1: Int = 114

scala> (2 * {3 + 4} + 5) * 6
res2: Int = 114