Beide Schnittstellen definieren nur eine Methode
public operator fun iterator(): Iterator<T>
Die Dokumentation sagt Sequence
, es soll faul sein. Aber ist das nicht auch Iterable
faul (es sei denn, es wird von a unterstützt Collection
)?
quelle
Java
(meistensGuava
) Fansmap
,filter
und andere tragen nicht genügend Informationen , andere zu entscheiden , als von der Quelle Kollektionstyp, und da die meisten Sammlungen auch Iterable sind, das ist kein guter Marker für „faul“ , weil es häufig überall. faul muss explizit sein, um sicher zu sein.Antwort des Hotkeys vervollständigen:
Es ist wichtig zu beachten, wie Sequence und Iterable in Ihren Elementen iteriert:
Sequenzbeispiel:
list.asSequence().filter { field -> Log.d("Filter", "filter") field.value > 0 }.map { Log.d("Map", "Map") }.forEach { Log.d("Each", "Each") }
Protokollergebnis:
Filter - Karte - Jeder; Filter - Karte - Jeder
Iterierbares Beispiel:
list.filter { field -> Log.d("Filter", "filter") field.value > 0 }.map { Log.d("Map", "Map") }.forEach { Log.d("Each", "Each") }
Filter - Filter - Karte - Karte - Jeder - Jeder
quelle
Mehr finden Sie hier .
quelle