www.jpct.net

General => German corner => Topic started by: shadow on November 26, 2010, 11:53:00 am

Title: Unterschied zwischen SimpleVector normalize() und add()
Post by: shadow on November 26, 2010, 11:53:00 am
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
Title: Re: Unterschied zwischen SimpleVector normalize() und add()
Post by: EgonOlsen on November 26, 2010, 12:30:14 pm
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.