Kotlinの条件文 if/else・when の文法について記載します。
目次
1. if/else
if/else(比較演算子を使用)
例)変数scoreの値によって分岐
1 2 3 4 5 6 7 |
if( score == 100 ){ println("スコアが100") }else if( 80 <= score ){ println("スコアが80から99まで") }else{ println("スコアが79以下") } |
if/else(inキーワード使用)
範囲指定する場合は、inキーワードを使用することで明示的に範囲を指定することができます。
先ほどの例を、inキーワードを使用すると次のようになります。
1 2 3 4 5 6 7 |
if( score == 100 ){ println("スコアが100") }else if( score in 80..99 ){ // inキーワードを使用して範囲指定 println("スコアが80から99まで") }else{ println("スコアが79以下") } |
else if で score の範囲を80 〜 99 と指定しています。
変数名 in 開始 .. 終了
このように指定すると明示的に範囲を指定できるので、ソースが見やすくなる、 バグを減らせる可能性もあります。
if/else(結果の代入)
先ほどまでの例では、条件によってprintlnで結果を表示していましたが、次のように一致した値を変数に代入することもできます。
例)条件に一致した値を変数 result に代入する
1 2 3 4 5 6 7 8 |
val result = if( score == 100 ){ "スコアが100" }else if( score in 80..99 ){ // inキーワードを使用して範囲指定 "スコアが80から99まで" }else{ "スコアが79以下" } println( result ) |
比較演算子の一覧
if / else で使用できる比較演算子の一覧です。
演算子 | 評価条件 |
---|---|
== | 左辺と右辺の値が等しい |
!= | 左辺と右辺の値が異なる |
< | 左辺の値が右辺より小さい |
<= | 左辺の値が右辺以下 |
> | 左辺の値が右辺より大きい |
>= | 左辺の値が右辺以上 |
=== | 左辺と右辺のインスタンスの参照が等しい |
!== | 左辺と右辺のインスタンスの参照が異なる |
2. when
if / else と同じように when を使用すると条件分岐することができます。
if /else の例をwhenで書き換えると次のようになります。
1 2 3 4 5 |
when( score ) { // 評価したい変数を指定 100 -> println("スコアが100") in 80..99 -> println("スコアが80から99まで") else -> println("スコアが79以下") } |
評価したい変数を指定して、アロー演算子(->)の左辺に条件、右辺に条件に一致した場合の処理を指定します。
また、if / else と同様に結果を代入することもできます。
1 2 3 4 5 6 |
val result = when( score ) { 100 -> "スコアが100" in 80..99 -> "スコアが80から99まで" else -> "スコアが79以下" } println( result ) |
if / else と when のどちらを使用すればいいかは、好みの部分もあるので厳密に決まりはありません。
ただ、when の方がコードがスッキリするので、複数条件がある場合は、when の方がコードが見やすくなると思います。