![]() |
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:
In SysUtils sind jetzt aber nur 4 verschiedene Funktionstypen (1-4 Parameter mit jeweils einem Result) definiert.
var
f: TFunc<integer, integer>; 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 |
Re: Typendefinition (Syntax) für Funktionstypen
Delphi-Quellcode:
Type
TMyFunc = Function (P1, P2 : Integer) : Integer; |
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:
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.
Type
TMyIntFunc = Function (P1, P2 : Integer) : Integer; TMystringFunc = Function (P1, P2 : string) : string; [... undsoweiterundsofort ...] |
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;
|
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 21:58 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-2025 by Thomas Breitkreuz