Ich habe eine java.lang.Iterable
, die ihre Werte träge berechnet. Ich rufe von Scala aus darauf zu. Gibt es eine Kern-API-Möglichkeit, nur bestimmte Werte zurückzugeben? Zum Beispiel Bildgebung gab es eine Filtermethode, die auch alle Ergebnisse bereitgestellt lieferte bisher:So erhalten Sie bestimmte Artikel von einem Scala Iterable, Aufrechterhaltung der Faulheit
val myLazyDistinctIterable = iterable.filter((previousReturnedItems, newItem) => previousReturnedItems.contains(newItem))
Ich denke, dies ist nicht ein sehr allgemeiner Fall ist, weil es vorher zurück Speicher von Elementen beinhaltet, und das auch sein mag, warum es isn‘ t in der Kern-API.
Ich weiß über List.distinct
und Set
s, aber ich möchte etwas, das seine Elemente nicht berechnen wird, bis gefragt.
Ich denke, der einfachste Weg, dies zu tun wäre, einen Iterator mit einem veränderlichen 'Set' in seiner Schließung zurück, die verfolgt, was es gesehen wird, und dann durch' Filter' auf seine Eingabe angewendet wird, aktualisiert die gesehen setze und gib gegebenenfalls false zurück. –