TraversableOnce: "Ein Vorlagenmerkmal für Sammlungen, das entweder nur einmal oder einmal oder mehrmals durchlaufen werden kann."

Ich verstehe diesen Satz nicht. Warum kann mehrmals durchlaufen werden? Ist nicht nur einmal ? Vielen Dank!

9
Guo 31 Dez. 2015 im 11:03

2 Antworten

Beste Antwort

In der Scaladoc heißt es ebenfalls

Dieses Merkmal dient in erster Linie dazu, die Codeduplizierung zwischen Iterator und Traversable zu beseitigen, und implementiert daher einige der gängigen Methoden, die nur in Bezug auf foreach ohne Zugriff auf einen Builder implementiert werden können.

Iteratoren können nur einmal "durchlaufen" werden. Ein Traversable kann viele Male durchlaufen werden.

TraversableOnce ist im Wesentlichen eine Schnittstelle, die den Umgang mit Iteratoren und Traversables abstrahiert. Ihr Code könnte entweder einen Iterator oder einen Traversable erhalten und genauso damit umgehen!

Für eine gute Erklärung vieler der in der Sammlungsbibliothek verwendeten Merkmale glaube ich, dass die Mehrheit (wenn nicht alle) von das Scala 2.8 Collections Design Tutorial ist immer noch korrekt.

17
Community 23 Mai 2017 im 12:16

Weil es etwas gibt, das nur einmal durchlaufen werden kann, zB:

Iterator.continually(readline)

Der Ausdruck erstellt einen Iterator, kann jedoch nur einmal durchlaufen werden. Andernfalls müssen alle gelesenen Daten gespeichert werden, was in den meisten Fällen eine Verschwendung ist.

Viele Container können beliebig oft durchlaufen werden, z. B. Array, Map und so weiter

Wenn ein Traversable mehr als einmal durchlaufen werden kann, kann es sicher einmal durchlaufen werden. Alle Traversable sind also auch TraversableOnce . TraversableOnce kann mindestens einmal, aber auch mehrmals durchlaufen werden.

1
Zang MingJie 31 Dez. 2015 im 08:53