![]() |
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. ;-) |
Re: Delphi-PRAXiS goes Hollywood ;-)
Zitat:
Delphi-Quellcode:
Ich meine ich habe Delphi 2006 nicht, daher kann ich nicht sagen, was man alles überladen kann und was nicht.
var
a: TAuto; b: TBus; l: TLKW; {..} a := (b shr 2) and (l shl 1); Dust Signs |
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:
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...
int operator +(int a, int b);
Finde ich etwas schade. Ansonsten aber super Video! :thumb: Etwas kurz vielleicht, aber klasse :mrgreen: |
Re: Delphi-PRAXiS goes Hollywood ;-)
Zitat:
Code:
Dust Signs
blub operator+(blub a, blub b);
|
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)
|
Re: Delphi-PRAXiS goes Hollywood ;-)
Zitat:
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 ;) |
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 :) |
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? |
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... ;) |
Re: Delphi-PRAXiS goes Hollywood ;-)
Zitat:
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:
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.
class operator add(A: Typ1; B: Typ2): Typ1;
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. |
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