Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#9

AW: IEnumerable rückwärts durchlaufen

  Alt 22. Okt 2013, 12:59
Eventuell als Zusatzinfo noch:

es gibt bestimmte IEnumerable Methoden, die verzögert ausgeführt werden und andere direkt.
Verzögerte Ausführung heißt, dass beim Durchlaufen erst die Elemente der Quelle durchlaufen werden (und das auch nur 1mal für einen kompletten Durchlauf) - z.B. Where oder Take

Einige Operationen können das nicht - zum Beispiel Reverse. Hierbei ist die Implementierung in .Net so, dass die Quelle ausgelesen und in ein Array gepackt wird. Dieses wird dann vom letzten bis zum ersten Element zurückgegeben.

Wenn man beachtet, dass hinter IEnumerable auch theoretisch eine unendliche Menge stecken kann, sieht man, dass bestimmte Operationen damit keinen Sinn machen würden.

Für eine for in Schleife spielt auch der Enumerator eine Rolle, welcher einen State hat - in dem Falle einer verketteten Liste könnte er also problemlos das aktuelle Element wissen, so dass du keinen Schlemiel hast.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (22. Okt 2013 um 13:01 Uhr)
  Mit Zitat antworten Zitat