2012年10月2日火曜日

Scala体験記_2

Scalaのifは文(statement)じゃ無くて式(expression)なんだぜ。だから以下のように書けたりする。

    val a = if (1 < 2 ) {10} else {20}
    println(a)
まぁこれだけやと三項演算子と何が違うの?っていわれそうやけども。

if式でハマってしまったのは、if式の評価順が予想よりも低いこと。
以下の例の出力結果はどうなるやろうか。


    val a = if (1 < 2 ) {
       10
    } else {
       20
    } 
       + 5
    println(a)

意味もなくネストして書いてみたけど、こいつの出力結果は10となる。 これはifよりも{20} + 5が先に評価されたせい。 これに気づかずに1時間ぐらい悩んでたら良くある誤解として取り上げられていたのでメモ。

0 件のコメント:

コメントを投稿