Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Generics ohne Typangabe - Ist das neu? (https://www.delphipraxis.net/182910-generics-ohne-typangabe-ist-das-neu.html)

Sir Rufo 26. Nov 2014 10:34

Delphi-Version: XE5

Generics ohne Typangabe - Ist das neu?
 
^^^^^ XE7!!!

Da habe ich doch gerade ein wenig mit Generics herumgebastelt und bin (positiv) überrascht, dass es funktioniert:
Delphi-Quellcode:
type
  TFoo = class
  public
    class procedure Bar<T>(const Value : T );
  end;

procedure Test;
var
  LBar : TBar;
begin
  TFoo.Bar( LBar ); // dieser Aufruf ist äquivalent zu
  TFoo.Bar<TBar>( LBar );
end;
Das war doch nicht immer so, oder doch? :gruebel:

himitsu 26. Nov 2014 10:42

AW: Generics ohne Typangabe - Ist das neu?
 
Kann mich nicht erinnern, daß es ging,
aber
ich glaub gehört zu haben, daß dieses Verhalten wurde mehrfach gewünscht wurde.

[edit] XE geht

und http://www.delphipraxis.net/issue-433/ :stupid:

Der schöne Günther 26. Nov 2014 10:44

AW: Generics ohne Typangabe - Ist das neu?
 
Ohne eine kompetente Antwort geben zu können (spätestens Stevie wird das tun), meine ich dass es in trivialen Fällen (wie diesem) schon vor XE7 ging.

Neutral General 26. Nov 2014 10:49

AW: Generics ohne Typangabe - Ist das neu?
 
Habs grad ausprobiert. Funktioniert seit Delphi 2009 ;)
Aber hatte ich auch nicht gewusst :)

himitsu 26. Nov 2014 10:50

AW: Generics ohne Typangabe - Ist das neu?
 
getestet ... Antwort korrigiert

Sir Rufo 26. Nov 2014 11:17

AW: Generics ohne Typangabe - Ist das neu?
 
Gefühlt hatte ich eigentlich auch diese Meinung im Kopf "Woanders geht es, nur bei Delphi nicht, wollen wir auch haben!".

Na gut, wir haben (hatten schon seit Ewigkeiten) es ... dann kann man ja auch was draus machen :)

himitsu 26. Nov 2014 11:21

AW: Generics ohne Typangabe - Ist das neu?
 
Das ging nicht, glaub ich.
Delphi-Quellcode:
type
  TFoo = class
  public
    class procedure Bar<T>() : T ;
  end;

procedure Test;
var
  LBar : TBar;
begin
  LBar := TFoo.Bar; // dieser Aufruf ist äquivalent zu
  LBar := TFoo.Bar<TBar>;
end;

Neutral General 26. Nov 2014 11:25

AW: Generics ohne Typangabe - Ist das neu?
 
Jo das geht tatsächlich nicht. Auch nicht in XE7.

Sir Rufo 26. Nov 2014 11:26

AW: Generics ohne Typangabe - Ist das neu?
 
Das auch nicht
Delphi-Quellcode:
TFoo = class
  class procedure Bar<T>( AList : TList<T> );
end;

Dejan Vu 26. Nov 2014 11:31

AW: Generics ohne Typangabe - Ist das neu?
 
In C# kann man die explizite Typangabe weglassen, wenn sie sich aus dem Aufrufkontext ergibt: Hier ist der Typ des Parameters bzw. des Rückgabewertes ausreichend und definiert damit den Typparameter. Offensichtlich ist das in Delphi nicht anders.

Bei C# habe ich das erst mit dem Einsatz des Refactoringtools "Resharper" bemerkt, der gnadenlos redundanten Code moniert (wenn man ihn lässt).


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:32 Uhr.
Seite 1 von 2  1 2      

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