8-3. for ループ
Contents
概要
同じような処理を繰り返し実行するしたい場合に、ループ処理を使うと便利です。
for ループでは、反復範囲を記載し、それが満たされる限りループ処理を行います。
書式
for というキーワードに続けて 丸括弧 ( ) で要素名 と反復範囲の条件文を記載します。
for (要素名 in 反復範囲) {
ループしたい文
}
ここで 反復範囲として指定できるのは以下の Iterable なオブジェクトです。
- 範囲型オブジェクト
- 配列型オブジェクト
- コレクションオブジェクト (リスト、セット、マップ)
使用例
範囲を使った反復処理
.. 演算子や until 関数で作成した範囲オブジェクトを使って、 数値の範囲を反復処理できます。
fun main (){ println("(i in 1..5) での反復") for (i in 1..5) { println(i) } println("(i in 1 until 5) での反復") for (i in 1 until 5) { // 5 は含まれない println(i) } }
出力
(i in 1..5) での反復
1
2
3
4
5
(i in 1 until 5) での反復
1
2
3
4
Kotlin Playground で実行
step を使った反復処理
step 関数を使用して、反復処理の間隔を指定できます。
fun main (){ for (i in 2..10 step 2) { println(i) } }
出力
2
4
6
8
10
Kotlin Playground で実行
downTo を使った反復処理
downTo 関数を使用して、数値を降順に反復処理できます
fun main (){ for (i in 5 downTo 1) { println(i) } }
出力
5
4
3
2
1
Kotlin Playground で実行
インデックスを使った反復処理
indices プロパティや withIndex() 関数を使用して、インデックスと共に要素にアクセスできます。
fun main (){ var numbers = IntArray(5) println("indices プロパティを使っての反復") for (index in numbers.indices) { println("Index: $index, Element: ${numbers[index]}") } println("withIndex() 関数を使っての反復") for ((index, number) in numbers.withIndex()) { println("Index: $index, Element: $number") } }
出力
indices プロパティを使っての反復
Index: 0, Element: 0
Index: 1, Element: 0
Index: 2, Element: 0
Index: 3, Element: 0
Index: 4, Element: 0
withIndex() 関数を使っての反復
Index: 0, Element: 0
Index: 1, Element: 0
Index: 2, Element: 0
Index: 3, Element: 0
Index: 4, Element: 0
Kotlin Playground で実行
break と continue
break 文は、ループを途中で終了させます。continue 文は、現在の反復をスキップして次の反復に進みます。
以下では i が 3 のときは、ループ本体の後続処理をスキップして次のループに進みます。
i が 5 のときは そこでループ処理を終了させます。( i =6 でのループ本体の処理は行われません。)
fun main (){ for (i in 1..6) { if (i == 3) { continue } if (i == 5) { break } println(i) } }
出力
1
2
4
Kotlin Playground で実行
break, continue については以下にも記載しています。