AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Spring Collections erweitern

Ein Thema von Rainer Wolff · begonnen am 19. Mär 2014 · letzter Beitrag vom 10. Apr 2014
Antwort Antwort
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.989 Beiträge
 
Delphi 12 Athens
 
#1

AW: Spring Collections erweitern

  Alt 19. Mär 2014, 10:22
Ist das das Spring das man aus java kennt? Also Aspekt orientierte Programmierung?
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Spring Collections erweitern

  Alt 19. Mär 2014, 10:31
Die einfachste Lösung wäre ja eine Funktion, die so eine Queue als Parameter nimmt und dann die Gesamtlänge zurückgibt.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.191 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Spring Collections erweitern

  Alt 19. Mär 2014, 10:41
Ist das das Spring das man aus java kennt? Also Aspekt orientierte Programmierung?
AOP ist in "Spring4D" nicht drin, der Fokus steht wohl eher bei den Collections und IoC.
AOP findest du (glaube ich) bei DSharp.

Für beides ist Stevie so ziemlich der Mann der Stunde


PS:
Müsste so gehen:

Delphi-Quellcode:
interface type
   TMyCollections = class(Spring.Collections.TCollections)
      public class function CreateMyQueue(ownsObjects: Boolean): IMyQueue;
   end;
   
implementation uses Spring.Collections.Queues, System.Generics.Collections;

class function TMyCollections.CreateMyQueue(ownsObjects: Boolean): IMyQueue;
type
   TOwningQueue = System.Generics.Collections.TObjectQueue<TMyItem>;
var
   objQueue: TOwningQueue;
   ownership: TOwnershipType;
begin
   objQueue := TOwningQueue.Create(ownsObjects);

   if ownsObjects then
      ownership := TOwnershipType.otOwned
   else
      ownership := TOwnershipType.otReference;

   Result := TMyQueue.Create(objQueue, ownership);
end;

Geändert von Der schöne Günther (19. Mär 2014 um 10:43 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie
Online

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

AW: Spring Collections erweitern

  Alt 10. Apr 2014, 21: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
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz