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
相关产品推荐
相关产品推荐

