wp_xyz hat geschrieben:m.fuchs hat geschrieben:Aber erstens ist das nun wirklich nicht unübersichtlicher als Klammerei.
Ich mag die Dinger ja auch nicht, aber ich muss zugeben, dass der verkettete Aufruf deutlich übersichtlicher sein kann als verschachtelte Prozedur/Funktionsaufrufe, nämlich wenn zusätzliche Parameter im Spiel sind.
Nehmen wir das Beispiel von oben mit der Matrix-Rotation. Da wird der Typehelper .Rotate wahrscheinlich mit drei Parametern für die Drehwinkel um die drei Raumachsen aufgerufen werden, also
Der klassische Funktionsaufruf wäre entsprechend
Sowie noch unentschieden. Interessant wird's aber, wenn man nach der Rotation noch eine Translation durchführen möchte, die ihrerseits auch wieder drei Parameter dx, dy, dz hat:
Code: Alles auswählen
Matrix.Translate(dx, dy, dz);
// bzw als klassische Funktion
Matrix2 := Translate(Matrix, dx, dy, dz);
Wenn man die beiden Operationen nun hintereinanderausführt, zuerst die Rotation, dann die Translation, sieht der Typehelper-Aufruf so aus, schön von links nach rechts, und die Parameter direkt bei der Methode:
Code: Alles auswählen
Matrix.Rotate(alpha, beta, gamma).Translate(dx, dy, dz)
Der klassiche Aufruf ist dagegen das reinste Chaos, weil man die Zeile sowohl von vorne als auch von hinten lesen muss und die Parameter des außeren Aufrufs durch den inneren Aufruf abgetrennt werden:
Code: Alles auswählen
Matrix := Translate(Rotate(Matrix, alpha, beta, gamma), dx, dy, dz)