ここがヘンだよScala言語の記事に突っ込みどころが多かったので、色々書いたのですが、ちょっとコメントの書き方が挑発的過ぎたので、こちらのエントリでまとめなおします。 if式の返り値 val v1 = if (1 < 2) {"a"} println(v1) val v2 = if (1 < 2) {"a"} else {"b"} println(v2) v1はUnit、v2は"a"。else節が無い場合、「最後に評価された式を、返り値とする」というルールから外れる。 2.8.1、2.9.0等、現行の版では、v1、v2ともに"a"が返る。ルール通りの動きで問題はない。 取り消し線と訂正がありますが、それについては本題とは関係無いので省きます。重要なのは、Scalaには「最後に評価された式を、返り値とする」というルールは最初から存在しないのに対して、そのようなルールが存在すると勘違いされてい