if 式
Scala では if は文じゃなくて式なので、値を持つ。
じゃぁ else がなかったらどうなんの?ってことで試してみた。
scala> if (true) 1 scala>
・・・えーっと?
scala> val res = if (true) 1 scala> res scala> println(res) ()
・・・Unit を返すらしい。もうちょっと親切な出力が欲しいです・・・
で、次に気になったのが else if の扱い。
scala> println(if (true) 1 else if (true) 2) 1 scala>
え、マジで? else if には else ないけど 1 が返って来ちゃうんだ・・・
なら、最初の if の条件を false にすれば 2 が返って来るの・・・?
scala> println(if (false) 1 else if (true) 2) () scala>
うがー!なんでじゃ!
ここでふと println を取っ払ってみると・・・
scala> if (true) 1 else 2 res5: Int = 1 scala> if (true) 1 else if (true) 2 res6: AnyVal = 1 scala>
型が違う・・・
つまり、else が無い if 式は Unit を返すので、if (false) 1 else if (true) 2 は普通に Unit を返した、と。
で、if (true) 1 else
なるほどー、なるほどー。