迭代器的运算符符号-Kotlin

eagi6jfj  于 2023-02-09  发布在  Kotlin
关注(0)|答案(1)|浏览(146)

我在Kotlin(包kotlin.collections)中查看了Iterable接口,注意到它有一个函数-iterator函数,它返回Iterator。但是,我也注意到它有operator关键字。
就我对Kotlin documentation的理解而言(如果我错了请纠正我),operator关键字用于语法糖,例如a.plus(b)operator fun使我们能够编写a + b而不是a.plus(b)
所以,我想知道,如果存在iterator()函数的“语法捷径”,那么它是什么?或者,关键字operator是否有我不知道的其他用途?我在文档中找不到任何关于这个的信息。

0dxa2lsx

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代码迭代Java Iterable)。

相关问题