我在Kotlin(包kotlin.collections
)中查看了Iterable
接口,注意到它有一个函数-iterator
函数,它返回Iterator
。但是,我也注意到它有operator
关键字。
就我对Kotlin documentation的理解而言(如果我错了请纠正我),operator
关键字用于语法糖,例如a.plus(b)
的operator fun
使我们能够编写a + b
而不是a.plus(b)
。
所以,我想知道,如果存在iterator()
函数的“语法捷径”,那么它是什么?或者,关键字operator
是否有我不知道的其他用途?我在文档中找不到任何关于这个的信息。
1条答案
按热度按时间0dxa2lsx1#
for
-loops的文档(不是您可能看到的docs for operator overloading)提供了答案:如前所述,for迭代提供迭代器的所有内容,这意味着它:
Iterator<>
的成员或扩展函数iterator()
:next()
hasNext()
。这三个函数都需要标记为
operator
。for
-循环要求用operator
标记iterator()
、next()
和hasNext()
方法。这是operator
关键字除了重载运算符之外的另一种用法。对于JVM互操作性,实现
java.util.Iterable
的Java类不需要iterator()
方法上的operator
关键字,因为它在Java中不存在(这使得可以从Kotlin代码迭代JavaIterable
)。