Kotlinのwhen式で条件処理分岐を実行する方法【初心者向け】

初心者向けにKotlinのwhen式の使い方について解説しています。Kotlinの条件分岐のひとつwhen文についてif文との違いや基本構文、使用例について見ていきましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

Kotlinのwhen式の使い方について解説します。

これからKotlinを学ぼうと考えている方はぜひチェックしておきましょう。

 

本記事はTechAcademyのAndroidアプリ開発オンラインブートキャンプの内容をもとに解説しています。

 

田島悠介

今回は、Androidアプリ開発に関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Kotlinのwhen式の使い方について詳しく説明していくね!

大石ゆかり

お願いします!

 

Kotlinのwhen式とは

Kotlinのwhen式とはプログラムの流れを制御する命令の1つで、条件による処理の分岐を行います。同じく条件による処理の分岐を行う if 文と比較して、より多くの条件で処理を分岐させるのに向いています。

なお、Java言語で同等な命令として switch 文がありますが、when 式は

  • caseを書かない
  • break文を書かなくても良い
  • 数値以外も扱える
  • 式の結果として値を返すことができる

などの違いがあります。

 

when式の使い方

when式の使い方は以下の通りです。1つ目は引数を評価する書き方です。

when(引数) {
    値1 -> 処理
    値2 -> 処理
    else -> 処理
}

2つ目は引数を書かずに、条件を評価する書き方です。

when {
    条件1 -> 処理
    条件2 -> 処理
    else -> 処理
 }

なお、whenは式なので、値を返すことができます。その場合は、各処理の結果がwhen式の結果として返ります。

val x = when {
    条件1 -> 処理
    条件2 -> 処理
    else -> 処理
}

 

[PR] Androidアプリの開発で挫折しない学習方法を動画で公開中

実際に書いてみよう

今回のサンプルプログラムでは、when式の使い方の例をいくつか確認します。実行は Kotlin の公式サイトの Playground を利用します。なお、 Playgroundでは、fun main() { … } の中にプログラムを記述します。

https://play.kotlinlang.org/

 

引数を評価する書き方

val x = "a"
when(x) {
  "a" -> println("xはaです")
  "b" -> println("xはbです")
  "c" -> println("xはcです")
  else -> println("xはa,b,cではありません")
}

実行結果は以下の通りです。

xはaです

 

条件を評価する書き方

val x = "d"
when {
  x == "a" -> println("xはaです")
  x == "b" -> println("xはbです")
  x == "c" -> println("xはcです")
  else -> println("xはa,b,cではありません")
}

実行結果は以下の通りです。

xはa,b,cではありません

 

値を返す書き方

val x = "b"
val msg = 
  when {
    x == "a" -> "xはaです"
    x == "b" -> "xはbです"
    x == "c" -> "xはcです"
    else -> "xはa,b,cではありません"
  }
println(msg)

実行結果は以下の通りです。

xはbです

 

when式を使うと、複雑な処理の流れを見通しよく簡潔に記述することができます。if文の分岐が多くなった場合など、使ってみると良いでしょう。

 

この記事を監修してくれた方

太田和樹(おおたかずき)
ITベンチャー企業のPM兼エンジニア

普段は主に、Web系アプリケーション開発のプロジェクトマネージャーとプログラミング講師を行っている。守備範囲はフロントエンド、モバイル、サーバサイド、データサイエンティストと幅広い。その幅広い知見を生かして、複数の領域を組み合わせた新しい提案をするのが得意。

開発実績:画像認識技術を活用した駐車場混雑状況把握(実証実験)、音声認識を活用したヘルプデスク支援システム、Pepperを遠隔操作するアプリの開発、大規模基幹系システムの開発・導入マネジメント

地方在住。仕事のほとんどをリモートオフィスで行う。通勤で消耗する代わりに趣味のDIYや家庭菜園、家族との時間を楽しんでいる。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

他にもAndroidアプリ開発の教科書 なんちゃって開発者にならないための実践ハンズオンの書籍レビュー記事も合わせてご覧ください。

TechAcademyでは、初心者でも最短4週間でオリジナルアプリが作れるAndroidアプリ開発講座(オンラインブートキャンプ)を開催しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルアプリを開発することが可能です。