kotlin で繰り返し処理を行いたい場面に遭遇した場合、基本的には for や while が使われます。
場合によっては、map や list などのコレクションを使用する際に、わざわざループ処理を書かないケースもあるかもしれませんが、今回はそこには触れません。
まずは基本的な繰り返し処理をマスターしておきましょう。
for文の基本構文
kotlin の for 文は JavaScript や PHP などの言語の foreach と似た使い方をします。
1 2 3 4 5 6 7 | var sum: Int = 0 for (i in 1..10) { sum += i } println("合計は${sum}です") |
結果は以下の通りです。
合計は55です
for の () の中は、in の左側に代入する変数、右側に繰り返しの範囲を設定します。
もちろん、list などのコレクションを 1 件ずつループさせることもできます。
1 2 3 4 5 | var mlist: MutableList<Int> = mutableListOf(1, 2, 3, 4, 5) for (m in mlist) { println(m) } |
結果は以下の通りです。
1
2
3
4
5
ループの条件やインクリメントなど、downTo や until を使うことで細かく制御できますが、ループ処理でそこまで細かい条件に遭遇するケースは稀なのでここでは紹介をしません。
while文の基本構文
次に while 文を紹介します。
while については、他の多くの言語と同じと思ってもらって構いません。
実は for があれば事足りるケースが大半だと思いますが、ループを抜ける条件が単純ではなかったり、一度だけループに入れて処理させたい do-while を使いたい場合に重宝します。
先ほどの for 文と似たサンプルを while で表現してみました。
1 2 3 4 5 6 7 8 9 | var i: Int = 1 var sum: Int = 0 while (i <= 10) { sum += i i++ } println("合計は${sum}です") |
皆さんのイメージ通りの使い方だと思います。
合計は55です
ループを抜ける条件とスキップする条件
さて、ループ処理があるならループを即座に抜けたり、その時の条件だけ処理をスキップさせたい場合が出てきます。
安心してください。kotlin にも break と continue が用意されています。
1 2 3 4 5 6 7 8 9 10 | var i: Int = 1 var sum: Int = 0 while (i <= 10) { sum += i i++ if (i > 5) { break } } |
i が 5 より大きい(つまり6になった)時点でループから抜けます。
よって、結果は以下になります。
合計は15です
また、i が奇数の時は処理を飛ばしてみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 | var i: Int = 1 var sum: Int = 0 while (i <= 10) { i++ if (i % 2 == 1) { continue } sum += i } println("合計は${sum}です") |
雑なサンプルですが、実行数と以下の結果となります。
(2, 4, 6, 8, 10 のみ足されます)
合計は30です
まとめ
ここまで、kotlin のループ処理を紹介してきました。
基本構文は他の言語と大きく変わることはありません。
前回紹介した、条件判定をする if や when と組み合わせて使う場合も多いでしょう。
よって、構文だけはマスターしておきましょう。
