KotlinはJavaにはないスマートな構文を多くサポートしています。
適切にそれらを用いることで簡潔であったり、明瞭なコードに出来ます。
本記事ではそのなかから、簡単な例として式の表現力を紹介したいと思います。
式と文
まず前提としてプログラムにおける「式」と「文」について簡単に説明しておきます。
「式」は決まりに従って評価され、評価値を持つものです。例えば代入式です。
「文」は手続きを表すものです。例えば(Javaにおける)for文やif文です。
プログラムは一般にこの組み合わせによって構成されます。
KoltinにはJavaでは出来ない式による表現があり、それを適切に使うことでよりKotlinらしいコードにすることが出来ます。
式としての制御構文
プログラムで制御構造を書くとき基本はifですね。
Java的に書くならば次のようになるでしょう(コードはKotlin)
var max = a if (a < b) { max = b }
どうしても変数を用意してブロック内で変数を書き換える必要があります。
Kotlinではifは式として扱えるので、次のように記述できます。
val max = if (a > b) { a } else { b }
各ブロックの末行が評価値になります。また中括弧を省略すれば次のようにも記述できます。
val max = if (a > b) a else b
Javaでいうところの三項演算子に近い表現ですね。Kotlinならifで書けるわけです。
また、Javaでのswitchに相当するwhenも式になります。
fun convertToSeason(month: Int): String? = when(month) { 4,5,6 -> "Spring" 7,8,9 -> "Summer" 10,11,12 -> "Autumn" 1, 11, 12 -> "Winter" else -> null }
if式と同様、各ブロックの末が値になります。
また、tryも式になるため、次のような記述が可能です。
val num: Int? = try { parseInt(str) } catch (e: NumberFormatException) { null }