Delphi-PRAXiS
Seite 15 von 26   « Erste     5131415 161725     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Klatsch und Tratsch (https://www.delphipraxis.net/34-klatsch-und-tratsch/)
-   -   Träume, Wünsche und Wahnvorstellungen... (https://www.delphipraxis.net/160506-traeume-wuensche-und-wahnvorstellungen.html)

Stevie 24. Mai 2011 17:46

AW: Träume, Wünsche und Wahnvorstellungen...
 
Zitat:

Zitat von himitsu (Beitrag 1102683)
Nur daß dieser erste Parameter in Delphi als verstecktes Self übergeben würde. :stupid:

Schonmal geschaut, wie man extension methods in C# schreibt? :stupid:

himitsu 24. Mai 2011 18:06

AW: Träume, Wünsche und Wahnvorstellungen...
 
ihhh C ... sowas guck ich mir nich an :stupid:

Elvis 25. Mai 2011 12:00

AW: Träume, Wünsche und Wahnvorstellungen...
 
Zitat:

Zitat von Stevie (Beitrag 1102675)
Mir fällt noch was ein:
  • interface helper (aka extension methods)
Wäre sogar noch vielseitiger und imo unter der Kategorie syntactic sugar umsetzbar, indem der compiler aus
Delphi-Quellcode:
myString.Upper();
ein
Delphi-Quellcode:
Upper(myString);
bastelt (oh Wunder, das ist genau das, was in C# bei den extension methods passiert).

Diese ganzen XYZ-Helper, haben ja gegenüber Ex-Methods nur den Vorteil, dass man damit Properties abbilden kann.
Ansonsten fand' ich es unglaublich ernüchternd, dass CodeGear tatsächlich so blödsinnig war, und Record-Helper einführte, anstatt einfach einfach nur noch "Helper for IrgendeinenTypenWieZumBleistiftInteger" zuzulassen.
Tat richtig weh, wenn jemand so einen riesigen Hebel hat und mit sowenig Aufwand soviel erreichen könnte, nur um sich dann (dank des offenkundig nicht vorhandenen Anspruchs) mit der primitivsten und sinnlosesten Lösung zufrieden zu geben. ("record helper" neben dem vorher schon existierenden "class helper")

implementation 25. Mai 2011 12:18

AW: Träume, Wünsche und Wahnvorstellungen...
 
Zitat:

Zitat von Elvis (Beitrag 1102801)
Diese ganzen XYZ-Helper, haben ja gegenüber Ex-Methods nur den Vorteil, dass man damit Properties abbilden kann.

Nö, noch einen: Man kann damit Bugs fixen.
In C# hat eine echte Methode immer Vorrang vor den Extension Methods, d.h. wenn es eine Methode gibt namens "HansWurst" und eine Extension Method, die ebenfalls "HansWurst" heißt, wird die Extension Method niemals aufgerufen, sondern jedesmal die echte Methode. Selbst, wenn sie verschiedene Signaturen haben.
In Delphi haben die Helper den Vorrang, d.h. man hat eine Methode A und der Helper hat ebenfalls eine Methode A. Wenn jetzt irgendwo im Code Instanz.A aufgerufen wird, kommt die Helper-Methode zum Einsatz.

Elvis 25. Mai 2011 14:27

AW: Träume, Wünsche und Wahnvorstellungen...
 
Zitat:

Zitat von implementation (Beitrag 1102810)
Zitat:

Zitat von Elvis (Beitrag 1102801)
Diese ganzen XYZ-Helper, haben ja gegenüber Ex-Methods nur den Vorteil, dass man damit Properties abbilden kann.

Nö, noch einen: Man kann damit Bugs fixen.
In C# hat eine echte Methode immer Vorrang vor den Extension Methods, d.h. wenn es eine Methode gibt namens "HansWurst" und eine Extension Method, die ebenfalls "HansWurst" heißt, wird die Extension Method niemals aufgerufen, sondern jedesmal die echte Methode. Selbst, wenn sie verschiedene Signaturen haben.

Das stimmt nicht! Ich kann mich erinnern, dass Oxygene sich so verhalten hat (kA ob es das nohc tut).
Aber nicht C#. Dort gewinnt die tatsächliche Methode nur wenn die Signatur gleich ist oder besser passt.

Code:
static void Miep(this Sample instance, object untypedValue)
{
   instance.Miep((int)untypedValue);
   instance.SetByExMethod = true;
}

class Sample
{
   public int Value { get; private set; }

   public bool SetByExMethod { get; set; }

   public void Miep(int newValue)
   {
      Value = newValue;
      SetByExMethod = false;
   }
}

static void Main()
{
   var s = new Sample();

   s.Miep(untypedValue: 1);
   Debug.Assert(s.Value == 1 && s.SetByExMethod);

   s.Miep(2);
   Debug.Assert(s.Value == 2 && !s.SetByExMethod);

   s.Miep((Object)3);
   Debug.Assert(s.Value == 3 && s.SetByExMethod);
}

implementation 25. Mai 2011 14:35

AW: Träume, Wünsche und Wahnvorstellungen...
 
Zitat:

Zitat von Elvis (Beitrag 1102850)
]Das stimmt nicht! Ich kann mich erinnern, dass Oxygene sich so verhalten hat (kA ob es das nohc tut).
Aber nicht C#. Dort gewinnt die tatsächliche Methode nur wenn die Signatur gleich ist oder besser passt.

Ist mein Gedächtnis so schlecht? Ich ahbe auch mehrere Monate mit C# gearbeitet und mich dauernd eben darüber geärgert :gruebel:
Irgendwie kann ich mir auch nicht vorstellen, dass Oxygene und C# da unterschiedlich verfahren.

[edit]
Du hast Recht, hab nochmal nachgeguckt.

An meiner Grundaussage rüttelt das jedoch nichts:
C#: echte Methoden Vorrang
Delphi: Helper-Methoden Vorrang

mquadrat 25. Mai 2011 17:06

AW: Träume, Wünsche und Wahnvorstellungen...
 
Ahh ich hätte da noch was:

Alle Dreingaben / Zusatzsoftware / Stückwerk mit in den Hauptinstaller packen. Bis man den ganzen Kram einzeln deinstalliert hat, hat man einen Bart :D

Und ein schnelleres EDN.

himitsu 25. Mai 2011 17:15

AW: Träume, Wünsche und Wahnvorstellungen...
 
Den Installer sollte man sowieso mal überarbeiten ... du willst nicht wissen, was für ein Schrott da drinnen enthalten ist.
(wer den Schock für's Leben haben will, der brauch sich diesen nur mal ansehn)

mquadrat 25. Mai 2011 17:19

AW: Träume, Wünsche und Wahnvorstellungen...
 
Gilt funktionierendes Error Insight eigentlich als Traum oder Wahnvorstellung? :?:

DeddyH 25. Mai 2011 17:20

AW: Träume, Wünsche und Wahnvorstellungen...
 
Beides :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:00 Uhr.
Seite 15 von 26   « Erste     5131415 161725     Letzte »    

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