Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Typendefinition (generische Syntax) für Funktionstypen (https://www.delphipraxis.net/139218-typendefinition-generische-syntax-fuer-funktionstypen.html)

Ralf Kaiser 25. Aug 2009 19:52


Typendefinition (generische Syntax) für Funktionstypen
 
Halli Hallo,

ich bin gerade dabei mit mit den anonymen Methoden ein wenig vertraut zu machen.

Wenn ich z.B. eine Anonyme Methode verwenden will die einen integer als Parameter hat und einen integer als Ergebnis liefert kann ich diese ja mit "TFunc<...>" aus SysUtils so deklarieren:

Delphi-Quellcode:
var
  f: TFunc<integer, integer>;
In SysUtils sind jetzt aber nur 4 verschiedene Funktionstypen (1-4 Parameter mit jeweils einem Result) definiert.

Wie deklariere ich neue Funktionstypen mit generischen Parametern? (also z.B. 6 generische Parameter, ein Result)

Ist der letzte Eintrag in "<>" immer das Result?

Die Hilfe der D2010-Trial ist in diesem Bereich leider etwas, na ja, mager. Ausserdem ist ja bei der Trial-Version kein Source dabei in dem man mal eben nachsehen könnte wie die Syntax lautet.

Danke schon mal für Hinweise,
Ralf

alzaimar 25. Aug 2009 19:53

Re: Typendefinition (Syntax) für Funktionstypen
 
Delphi-Quellcode:
Type
  TMyFunc = Function (P1, P2 : Integer) : Integer;

Ralf Kaiser 25. Aug 2009 20:03

Re: Typendefinition (Syntax) für Funktionstypen
 
Ja. Das definiert eine Funktion mit 2 integern und integer als Resultat.

Wie definiere ich das aber generisch (damit man für unterschiedliche Typenkombinationen nicht jedes mal eine neue Definition schaffen muss)?

Ich will alle Fälle abdecken:

Delphi-Quellcode:
Type
  TMyIntFunc = Function (P1, P2 : Integer) : Integer;
  TMystringFunc = Function (P1, P2 : string) : string;
  [... undsoweiterundsofort ...]
In SysUtils scheinen ja schon generische Definitionen für bis zu 4 Parametern zu existieren. Mir ist nur nich klar wie genau die Syntax dieser generischen(!!) Definition lautet.

Uwe Raabe 25. Aug 2009 20:15

Re: Typendefinition (generische Syntax) für Funktionstypen
 
Delphi-Quellcode:
 TFunc<T1,T2,T3,T4,T5,T6,TResult> = reference to function (Arg1: T1; Arg2: T2; Arg3: T3; Arg4: T4; Arg5: T5; Arg6: T6): TResult;

Ralf Kaiser 25. Aug 2009 20:17

Re: Typendefinition (generische Syntax) für Funktionstypen
 
Vielen Dank! - Das ist es.

An die Systax der Generika muss ich mich erst noch ein wenig gewöhnen. :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz