Home About Contact
Kotlin

Kotlin, repeat と until の使い分け

たとえば、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)
}

これは作動しない。