【学習kotlinシリーズ】イテレータを持ったオブジェクトを作成
Qiitaでことりん学習帳を発売しています!
イテレータを持ったオブジェクトは、nextメソッドとhasNextメソッドの2つのメソッドを定義していれば実装できる。
nextメソッドとhasNextメソッドはそれぞれ次の役割を果たす。
メソッド名 | 役割 |
next | 繰り返し処理で次の要素を返すメソッド |
hasNext | 次の要素がある場合はtrue、ない場合はfalseを返すメソッド |
実際に書いてみる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
// イテレータを持つオブジェクト class IteratorClass { // 乱数で 0.9未満の値が出たらtrueを返して次の要素があることを返す operator fun hasNext(): Boolean = {Math.random() < 0.9 // 次の要素として Hello Kotlin という文字列を返す operator fun next(): String = "Hello Kotlin" } class IterableClass { operator fun iterator() = IteratorClass() } fun main(args: Array<String>){ for (x in IterableClass()){ println(x) } } |
実行結果
1 2 3 4 5 6 7 8 9 |
Hello Kotlin Hello Kotlin Hello Kotlin Hello Kotlin Hello Kotlin Hello Kotlin Hello Kotlin Hello Kotlin Hello Kotlin |
今回のイテレータを持つオブジェクトは繰り返す回数はランダムで、実行するたびに出力される Hello Kotlinの回数は違う。