Delphi-PRAXiS
Seite 9 von 19   « Erste     789 1011     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Fragen / Anregungen zur DP (https://www.delphipraxis.net/29-fragen-anregungen-zur-dp/)
-   -   Delphi-PRAXiS goes Hollywood ;-) (https://www.delphipraxis.net/58322-delphi-praxis-goes-hollywood-%3B.html)

Daniel 11. Dez 2005 18:37

Re: Delphi-PRAXiS goes Hollywood ;-)
 
"Dran glauben" klingt für mich gleich so, als würde man die Typenprüfung tatsächlich umgehen können. Aber intern werden die Typen ja sehrwohl beachtet.

Aber ganz klar: Man kann Beispiele konstruieren - wie ich in dem Video - bei denen die Typen längst nicht mehr so ersichtlich sind. Ohne Frage lässt sich damit auch Schabernack treiben - aber das konnten wir vorher auch schon in Delphi. ;-)

Dust Signs 11. Dez 2005 18:47

Re: Delphi-PRAXiS goes Hollywood ;-)
 
Zitat:

Zitat von Daniel
aber das konnten wir vorher auch schon in Delphi. ;-)

Bisher aber nur explizit ;). Beispiel:

Delphi-Quellcode:
var
  a: TAuto;
  b: TBus;
  l: TLKW;
{..}
  a := (b shr 2) and (l shl 1);
Ich meine ich habe Delphi 2006 nicht, daher kann ich nicht sagen, was man alles überladen kann und was nicht.

Dust Signs

malo 11. Dez 2005 18:51

Re: Delphi-PRAXiS goes Hollywood ;-)
 
Schade finde ich, dass die Implementierung der Operatorüberladung nicht wie in C# funktioniert. Dort macht man das etwa so:
Code:
int operator +(int a, int b);
Dort sieht man direkt: "Aha! Der + Operator ist gemeint", und muss nicht alle entsprechenden Bezeichnungen lernen. Wobei es da nichtmal so wirklich um das Add() geht, sondern um andere. Beispielsweise um "Implicit". Denn ich hab es mir in etwa wie in C# vorgestellt...

Finde ich etwas schade.

Ansonsten aber super Video! :thumb:
Etwas kurz vielleicht, aber klasse :mrgreen:

Dust Signs 11. Dez 2005 18:59

Re: Delphi-PRAXiS goes Hollywood ;-)
 
Zitat:

Zitat von malo
Schade finde ich, dass die Implementierung der Operatorüberladung nicht wie in C# funktioniert. Dort macht man das etwa so:
Code:
int operator +(int a, int b);
Dort sieht man direkt: "Aha! Der + Operator ist gemeint", und muss nicht alle entsprechenden Bezeichnungen lernen.

Ist in C++ genau das gleiche:

Code:
blub operator+(blub a, blub b);
Dust Signs

Hansa 11. Dez 2005 20:49

Re: Delphi-PRAXiS goes Hollywood ;-)
 
Ist doch schönes Video. Gute Idee ! Aber @Malo : was willst Du mit der Operatorüberladung konkret machen ? Würde mich mal interessieren. 8)

malo 11. Dez 2005 20:54

Re: Delphi-PRAXiS goes Hollywood ;-)
 
Zitat:

Zitat von Hansa
@Malo : was willst Du mit der Operatorüberladung konkret machen ? Würde mich mal interessieren. 8)

Die Frage ist ja wohl nebensächlich, da ich überhaupt kein BDS 2006 besitze :mrgreen:

Allerdings würde ich mit der Operatorüberladung einige Funktionsaufrufe ersparen. Funktionen durch Operatoren ersetzen etc. Das kann man natürlich mit der Delphi-Operatorüberladung auch, aber ich finde diese Variante einfach nicht so schön. Wie gesagt, die C++/C#-Variante ist die bedeutend schönere, die ich lieber in Delphi gesehen hätte ;)

Aenogym 11. Dez 2005 21:03

Re: Delphi-PRAXiS goes Hollywood ;-)
 
also ich find die neuen features super :thumb:
class operators sind ja wohl mal eine geile möglichkeit - gerade auf arbeit würde cih sowas sehr zu schätzen wissen. nur schade, dass wir immernoch mit delphi6 arbeiten :(

tja ich bin gespannt, was es sonst noch so neues gibt :)

Chewie 11. Dez 2005 21:10

Re: Delphi-PRAXiS goes Hollywood ;-)
 
Was mich bei der Operatorüberladung gewundert hat:

Daniel, du hast zwei "implicit"-Operatoren definiert (unterschieden durch den Typ des Arguments): Was mich nun daran gewundert hat war, dass kein overload angegeben werden musste. Diese class operators sind doch im Wesentlichen sowas wie Funktionen, insofern ist es doch ein nicht unerheblicher Bruch in der Logik, wenn dort überladenden Varianten eines überladenen Operators (uff!) auch entsprechend gekennzeichnet werden müssten, wie dies auch bei Funktionen der Fall ist.

Oder kann man die Bezeichner dort neuerdings auch weglassen?

malo 11. Dez 2005 21:27

Re: Delphi-PRAXiS goes Hollywood ;-)
 
Ich denke mal, ein Overload ist nicht nötig, weil es ja bei Operatoren grundsätzlich nur Überladungen gibt. Bei Funktionen überlädt man ja nicht zwangsläufig. Bei Operatoren schon.
Bei Funktionen muss der Compiler also unterscheiden können, ob überladen wird oder nicht. Bei Operatoren ist es ja unsinn, da halt immer überladen wird ;)

edit: Noch was:
Was ich mir noch wünschen würde, wäre eine größere Auswahl an Operatoren, die man überladen kann :mrgreen:
In C++ gibt es ja Operatoren wie "<<" oder ">>", oder "++", "--" etc. pp.
Das ist einiges, was ich gerne selbst überladen würde (oder deklarieren). ;)

Dazu wäre halt aber die Überladung im C++-Stil notwendig. Aber das hab ich ja schon angesprochen... ;)

Chewie 11. Dez 2005 21:39

Re: Delphi-PRAXiS goes Hollywood ;-)
 
Zitat:

Zitat von malo
Ich denke mal, ein Overload ist nicht nötig, weil es ja bei Operatoren grundsätzlich nur Überladungen gibt.

Der Begriff "Überladung" ist hier etwas zweideutig zu verstehen. Funktionen können überladen werden. Dabei nimmt eine Funktion, abhängig vom Kontext, mehrere Formen an. Der Kontext wird in dem Fall durch die Aufrufparameter bestimmt.

Bei der Operatorüberladung bestimmt sich der Kontext aus den Typen der Operanden, was man letztendes auch als das gleiche ansehen kann.


Was mir noch nicht ganz klar ist: Eine Überladung beispielsweise des Additions-Operator sieht ja so aus:

Delphi-Quellcode:
class operator add(A: Typ1; B: Typ2): Typ1;
Was ist der Bezug zwischen dem Operator und der Klasse/dem Record, in dem er deklariert wird? Schließlich steht der Kontext (also die Typen der Operanden) ja in der Signatur allein, die Typzugehörigkeit scheint ja keine Rolle zu spielen.

Könnte ich dementsprechend also meinen Operator zum Addieren von zwei Vektoren innerhalb der Deklaration einer Klasse für komplexe Zahlen angeben, wenn ich als Parameter zwei Objekte vom Typ Vektor angebe?

Oder wie ist das ganze zu verstehen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:56 Uhr.
Seite 9 von 19   « Erste     789 1011     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