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

Kotlin中Iterable接口iterator()方法的operator关键字对应什么语法糖?

Kotlin中Iterable接口iterator()方法的operator关键字作用说明

operator修饰iterator()方法对应的语法糖就是Kotlin的for-in遍历,这是Kotlin约定机制中「迭代约定」的标准实现规则。

  • 只要类中定义了operator fun iterator(): Iterator<T>方法,不管有没有继承Iterable接口,该类的实例都可以直接用for (元素 in 实例)的语法遍历,不需要显式调用iterator()、手动处理hasNext()和next()逻辑。
  • 编译器会自动把符合迭代约定的for-in代码,转成等效的迭代器调用逻辑,示例如下:
// 自定义支持for-in遍历的类
class CustomStringList(private val data: List<String>) {
    operator fun iterator(): Iterator<String> = data.iterator()
}

fun main() {
    val strList = CustomStringList(listOf("a", "b", "c"))
    // 直接用for-in遍历,等价于手动调用迭代器的完整逻辑
    for (s in strList) {
        println(s)
    }
}

kotlin.collections.Iterable在接口层面就给iterator()方法加上operator修饰,目的是让所有实现该接口的集合类,默认符合迭代约定、直接支持for-in遍历,子类不需要再单独给重写的iterator()方法加operator关键字。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:39:04