You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin中为已有类(如Pair)添加自定义迭代器

为Kotlin Pair类实现自定义迭代器支持for循环遍历

由于Kotlin标准库中的Pair是final类,无法直接修改源码,我们可以通过扩展函数为它添加符合要求的迭代器实现,让Pair实例能直接在for循环中遍历。

实现代码

// 为Pair添加迭代器扩展函数
operator fun <A, B> Pair<A, B>.iterator(): Iterator<Any?> {
    var currentIndex = 0
    return object : Iterator<Any?> {
        // 判断是否还有未遍历的元素
        override fun hasNext(): Boolean = currentIndex < 2

        // 返回下一个元素,遍历完抛出规范异常
        override fun next(): Any? {
            return when (currentIndex++) {
                0 -> first
                1 -> second
                else -> throw NoSuchElementException("Pair contains only 2 elements")
            }
        }
    }
}

使用示例

fun main() {
    val pair: Pair<Int, String> = Pair(1, "sample data")
    for (element in pair) {
        println(element)
    }
}

代码说明

  • 用operator关键字修饰扩展函数,这是Kotlin中让for循环识别迭代器的必要条件
  • 迭代器内部通过currentIndex变量跟踪遍历位置,从0开始计数
  • hasNext()方法判断当前是否还有可遍历的元素(Pair固定只有两个元素,所以判断currentIndex < 2)
  • next()方法根据当前索引返回first或second属性,每次调用后索引自增;若索引超出范围,抛出NoSuchElementException,符合Iterator接口的规范

内容的提问来源于stack exchange,提问作者nanobot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 03:05:29