Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

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

AW: Spring Collections erweitern

  Alt 10. Apr 2014, 20:40
Erstmal sorry, dass ich den Thread erst jetzt sehe - ich wünschte, es gäb hier Notifications, die man sich für bestimmte Keywords einrichten könnte.

Zu deiner Frage:
TQueue<T> in Spring4D ist "nur" ein Wrapper um die TQueue<T> aus Generics.Collections, um ihr das IQueue<T> Interface zu verpassen. Das verleiht ihr aber auch die Flexibilität bei Bedarf beide Klassen anpassen zu können.

Musst du aber in deinem Fall meiner Meinung nach nicht. Da wir leider in Delphi keine interface helper haben (das wär schön, dann könnte man einfach die Sum Methode aus dem IEnumerable<T> helper nutzen und bumm, fertig).

Egal, du benötigst ja hier eine Summe für die Menge einer konkreten Klasse (TMyItem). Das macht es einfach, da du so keine Selector Delegate brauchst, die dir den zu summierenden Wert (in deinem Fall die Laenge) liefert, was du bei einem IEnumerable<T>.Sum bräuchtest.

Ich würde also folgende simple Lösung vorschlagen, die überhaupt keine Modifikation bestehender Klassen notwendig macht.

Delphi-Quellcode:
function GesamtLaenge(const source: IEnumerable<TMyItem>): Double;
var
  item: TMyItem;
begin
  Result := 0;
  for item in source do
    Result := Result + item.Laenge;
end;
Im Grunde ist das auch genau das, was eine extension Method für IEnumerable<TMyItem> machen würde, nur dass man die Dank (in Delphi nicht vorhandenem) syntactic sugar anders aufrufen kann.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat