如何在Kotlin中创建一个可迭代的对象

发现网上教程有错误,而大家都是一股脑抄抄抄,没有一个人指出错误,估计实际敲下来的更少了!

kotlin中的for,while循环,可以迭代一切可以迭代的对象,

而可迭代的对象需要满足以下三点

  1. 有一个成员函数或者扩展函数 iterator(),它的返回类型为*Iterator(教程这里截然而至,难道都没看见少复制了几个字吗??)

  2. iterator()需要返回一个Iterator对象,这里内部类直接实现即可

  3. iterator继承类需要实现next()hasNext()方法,

示例代码如下(将hello Kotlin逐个字符打印出来):

class CanForEach {
    var s = "hello Kotlin"
    var index = 0

    operator
    fun iterator(): Iterator<Char> {
        return Itr()
        //需要返回一个Iterator  而Iterator是接口,需要写实现类
    }

    private inner class Itr : Iterator<Char> {
        override fun hasNext(): Boolean {
            return index < s.length
        }

        override fun next(): Char {
            val c = s[index]
            index++
            return c
        }
    }
}

测试代码:

fun whileMethod(array:CanForEach){
        val iterator=array.iterator()
        while (iterator.hasNext()){
            println(iterator.next())
        }
}

当然.这只是一个实例,你可以改为泛型增加通用性!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容