Unterschied zwischen SimpleVector normalize() und add()

Started by shadow, November 26, 2010, 11:53:00 AM

Previous topic - Next topic

shadow

Hallo,

eine Frage bzw. Verständnisproblem:

SimpleVector.normalize() wirkt nicht auf das SimpleVector-Objekt selbst, sondern gibt den modifizierten Vector zurück.
Allerdings SimpleVector.add() gibt void zurück, wirkt also vermutlich direkt auf das SimpleVector-Objekt.

Ist das so richtig? Gibt es einen Grund warum das so ist? Ich finde, es gibt durchaus Anwendungsfälle, wo man es umgekehrt haben möchte, also dass normalize() auf das Objekt wirkt, oder add() nur zurückgegeben wird. Am coolsten wäre natürlich beides:

SimpleVector normalize();
void normalizeThis();

SimpleVector add(SimpleVector vec);
void addToThis(SimpleVector vec);


MfG!
Stefan

EgonOlsen

Das hat letztendlich historische Gründe...so ganz konsistent ist das in der Tat nicht. Wenn du quasi ein normalizeThis machen willst, kannst du alternativ die Methode mit dem SimpleVector als Parameter nehmen und dort this selber reinstopfen, also quasi a.normalize(a); Von dieser Art Methoden gibt ein paar, die Signatur ist zugegeben gewöhnungsbedürftig. Es sind Methoden, die eigentlich von der Android-Version stammen. Dort muss das sein, damit man die Anzahl neuer Objekte kleinhält, ohne immer alles gleich aus this anzuwenden.