Ich lese "Programmierung in Scala 2ed". In Abschnitt 24.4 wird darauf hingewiesen, dass Iterable viele Methoden enthält, die ohne einen Iterator nicht effizient geschrieben werden können. Tabelle 24.2 enthält diese Methoden. Ich verstehe jedoch nicht, warum einige von ihnen nicht effizient im Iterator implementiert werden können. Betrachten Sie beispielsweise zipWithIndex.
%Vor%Warum verschieben Sie diese Definition nicht in traversable? Es scheint mir, dass der Code genau derselbe sein könnte und es keinen Unterschied in der Effizienz geben würde.
Sie sind vollkommen korrekt und Ihre Implementierung sollte funktionieren. Kein Grund, zipWithIndex
in Iterable
und nicht Traversable
zu definieren; Weder gibt es eine Garantie für die Reihenfolge der Elemente unter Traversierung.
(Dies ist meine erste Antwort auf StackOverflow. Ich hoffe, ich war hilfreich. :) Wenn nicht, bitte sag es mir.)
Traversable garantiert nicht die Reihenfolge, in der die Elemente besucht werden Sie müssen nur eine foreach-Methode mit der folgenden Signatur definieren:
%Vor% Da diese Methode nur f
für jedes Element in beliebiger Reihenfolge aufrufen muss, ist es nicht sinnvoll, einen Index für Elemente zu haben, da die Reihenfolge für jeden Aufruf von foreach
anders sein könnte.
Bearbeiten: Dies ist wirklich nur eine Erklärung, warum es nicht auf Traversable ist. Wie Luigi in den Kommentaren darauf hingewiesen hat, wäre zipWithIndex bei Seq
sinnvoller.
Tags und Links scala