Author Topic: Unterschied zwischen SimpleVector normalize() und add()  (Read 3636 times)

Offline shadow

  • byte
  • *
  • Posts: 14
    • View Profile
Unterschied zwischen SimpleVector normalize() und add()
« 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

Offline EgonOlsen

  • Administrator
  • quad
  • *****
  • Posts: 12295
    • View Profile
    • http://www.jpct.net
Re: Unterschied zwischen SimpleVector normalize() und add()
« Reply #1 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.