Ich möchte sowas in Scala machen.Scala: Werte an Iterator "von innen" einspeisen
def getFancyIterator: Iterator[Int] = {
... { /// Some arbitrary logic goes here: conditionals, loops, whatever
... {
... {
val x = ...
// Then at some point I call this:
feedNext(x)
}
}
}
}
nun von außen alles, was wie normalen Iterator aussehen sollte, so dass ich tun könnte, zum Beispiel:
getFancyIterator.foreach(println)
Der Trick ist natürlich, dass ich will nicht alles speichern, diese Werte in einer Sammlung zu jedem Zeitpunkt. Mit anderen Worten, ich möchte, dass meine getFancyIterator
Funktion die next()
Werte des Iterators "on demand" "einspeist".
Ich bin sicher, es muss eine (peinliche) einfache Art und Weise sein, genau das zu tun, aber irgendwie ist es nicht mir in den Sinn kommen ..
UPDATE: Im Grunde möchte ich tun yield x
, aber nicht nur von normalen for
Schleife, sondern von irgendeinem willkürlichen Stück Code.
Wenn 'feedNext' gibt ein' Iterator [Int] 'Sie sollte in Ordnung sein. Was kommt eigentlich zurück? –
Nein, die gesamte Funktion 'getFancyIterator' gibt zurück und Iterator. 'feedNext' markiert nur den Ort, an dem ich den nächsten Wert für den resultierenden Iterator" einspeisen "möchte. –
Danke für die Bearbeitung, Daniela –