Einzelnen Beitrag anzeigen

QuickAndDirty

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

AW: Wie kann ich Generics an overloaded Methode weitergeben

  Alt 28. Okt 2024, 13:04
Das wird so wohl nichts. Wie soll der Compiler denn wissen von welchen Typ T ist. Sechs Varianten sind erlaubt bei Add.
Da müsste es dann schon eine "function Add(const Element: <T>): TJSONArray" geben.
in TS kann ich die Typvariable einschränken...
Ja ich weiß....

Wenn man den Typ "einschränkt", dann compiliert es:

class Function ArrToJSON<T: TJSONArray>(const aArr:TArray<T>):String; Leider kann man nur auf Klassen, Interfaces und Records einschränken, nicht auf String, Integer etc.


Aber du könntest sowas versuchen (ungetestet):

Delphi-Quellcode:
  if TypeInfo(T) = TypeInfo(string) then
    JSArr.Add(String(element))
  else if TypeInfo(T) = TypeInfo(Double) then
    JSArr.Add(Double(element))
  ...
  else
    Raise Exception.Create((PTypeInfo(TypeInfo(T))^.Name + ' not allowes');
Ja es wär schon cool wenn es eine notation dafür gäbe.

Ist ok
Ich hoffe einfach mal das ich nie etwas anderes als TArray<String> brauche. Und wenn mal was dazu kommt dann gibts halt overloaded versionen. Ich halte ja eh nichts von DRY.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat