program Project1;
procedure generic Swap(var a, b:<T>);
var
d: T;
begin
d := a;
a := b;
b := d;
end;
var
a: integer = 1;
b: integer = 2;
begin
Swap(a, b);
Writeln(a);
Writeln(b);
Readln;
end.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
procedure VariantSwap(var a, b:Variant);
var
d: Variant;
begin
d := a;
a := b;
b := d;
end;
procedure TForm1.Button1Click(Sender: TObject);
var a,b:Variant;
begin
a:='eins';
b:='zwei';
VariantSwap(a,b);
Caption:=a;
end;
mschnell hat geschrieben:Vermutlich gibt es deshalb keine Generics außerhalb von Objekten.
Außerhalb von Klassen gibt es Compiler Magic.
Man könnte auch einen Mechanismus in der Sprache einfügen um statische Klassen-Methoden ohne Klassennamen aufzurufen. So etwas gibt es in Java um Standardfunktionen (z.B. mathematische Funktionen) wie Methoden der aktuellen Klasse aufrufen zu können. Mit so einem Konstrukt könnte man auch in Pascal die Generics wie normale Funktionen verwenden.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Mathias hat geschrieben:Mit template kann man es in C++ auch lösen.
Mit nur 50 Zeichen und nur "typeof" als zusätzliche Syntax, um ein Generic zu ermöglichen bleibt das GNU #define Macro ungeschlagen (geht natürlich auch in GNU c++)
-Michael