【学習kotlinシリーズ】イテレータを持ったオブジェクトを作成

2017年6月2日

Qiitaでことりん学習帳を発売しています!

イテレータを持ったオブジェクトは、nextメソッドとhasNextメソッドの2つのメソッドを定義していれば実装できる。
nextメソッドとhasNextメソッドはそれぞれ次の役割を果たす。
[table-wrap bordered="true" striped="true"]

メソッド名役割
next繰り返し処理で次の要素を返すメソッド
hasNext次の要素がある場合はtrue、ない場合はfalseを返すメソッド

[/table-wrap]

実際に書いてみる

// イテレータを持つオブジェクト
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)
    }
}

実行結果

Hello Kotlin
Hello Kotlin
Hello Kotlin
Hello Kotlin
Hello Kotlin
Hello Kotlin
Hello Kotlin
Hello Kotlin
Hello Kotlin

今回のイテレータを持つオブジェクトは繰り返す回数はランダムで、実行するたびに出力される Hello Kotlinの回数は違う。