Forum: Object-Pascal / Delphi-Language
by Uwe Raabe,
11. Mär 2020
Weil dann der Visitor entscheidet, wann und wie er das Accept aufruft. Er könnte das auch einem anderen Visitor überlassen, den er temporär erstellt und dann den Node an dessen Visit weitergibt. Das hatte ich mir auch schon überlegt, um die unterschiedlichen Separatoren (sLineBreak und ', ') zu abstrahieren.
Das lässt sich aber ganz hervorragend innerhalb der Visitorklasse regeln. Der Knoten...
Forum: Object-Pascal / Delphi-Language
by Uwe Raabe,
11. Mär 2020
Das C# Beispiel betrachte ich mal als gutes Beispiel, wie man es nicht machen sollte. Nur weil C# davor steht, ist der Code ja nicht automatisch über jeden Zweifel erhaben.
Nun, ich kann nur kommentieren, was ich sehe. Da ich deine realen Anforderungen nicht kenne, kann ich dazu auch keine Vorschläge machen.
Das Ziel geht meiner Meinung nach konträr zum ursprünglichen Anliegen des...
Forum: Object-Pascal / Delphi-Language
by Uwe Raabe,
11. Mär 2020
Ich sehe aktuell keinen Grund, das Ganze generisch zu machen. Es ist nur so, daß du das Pattern nicht korrekt umgesetzt hast und deswegen die Probleme mit dem Typ des result-Werts kommst.
So solltest die niemals t.Accept(Visitor) aufrufen, sondern immer Visitor.Visit(t). Entsprechend muss das Accept gar nichts über den Result wissen, den es ja eh nur an den Visitor weiterreicht.
Eine...