我看了一下Kotlin(kotlin.collection)中的Iterable介面,注意到它有一個函式--iterator函式,它回傳一個Iterator。但是,我也注意到它有一個operator關鍵字。據我從kotlin檔案中了解到(如果我錯了,請糾正我),operator關鍵字用于語法糖,例如,a.plus(b)的operator fun使我們可以寫a b而不是寫a.plus(b)。因此,我想知道,如果iterator()函式存在 "語法快捷方式",那么它是什么?還是有其他我不知道的用途?我在檔案中找不到關于這個問題的任何資訊。
uj5u.com熱心網友回復:
關于for回圈的檔案(而不是你可能看過的關于運算子多載的檔案)提供了答案:
如前所述,for可以迭代任何提供迭代器的東西。這意味著它:
- 有一個成員或一個擴展函式
iterator(),它回傳Iterator<>:- 有一個成員或一個擴展函式
next()。
- 有成員或擴展函式
next()。- 有一個成員或一個擴展函式
hasNext(),回傳布林值。這三個函式都需要被標記為
operator。
for-loop要求iterator()、next()和hasNext()方法被標記為operator。這是operator關鍵字在多載運算子之外的另一種用法。
對于JVM的互操作性,實作java.util.Iterable的Java類不需要在iterator()方法上使用operator關鍵字,因為它在Java中不存在(這使得從Kotlin代碼中迭代Java Iterables成為可能)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/328856.html
標籤:
下一篇:在Kotlin中合并一個地圖串列
