たとえば、0,1,2 という index を生み出す場合、いくつかの書き方がある。
for(index in 0..2){
println(index)
}
これで 0,1,2 が出力される。
until を使えば:
for(index in 0.until(3)){
println(index)
}
これでも 0,1,2 が出力される。
until の場合は until のあと指定した数は含まれないので注意。 (つまり、0.until(3) なら 2 までということ)
これは次のような場合に便利。
val list = listOf('a','b','c')
for(index in 0.until(list.size)){
println(list[index])
}
そして 0,1,2 を生み出す別の方法が repeat。
repeat(3) { index->
println(index)
}
これでも 0,1,2 が出力できる。
repeat は実際は二つの引数をとるので、上のコードは以下のようなコードを簡単に表記したもの。
repeat(3, {index->
println(index)
})
したがって、以下のようには書けない。
for(index in repeat(3)){
println(index)
}
これは作動しない。
ちなみに 0.until(3) の場合 for 文ではなく forEach することもできる。
0.until(3).forEach { index->
println(index)
}
repeat は forEach 使えない。
repeat(3).forEach {index->
println(index)
}
これは作動しない。