Есть следующий код:

Код:
class Vector {
public var coordinates:Array;
public function Vector() {
this.coordinates = this.controllElem(arguments);
}
public function dimension():Array {
var misc = this.coordinates.concat();
return misc;
}
public function length(roundable:Boolean):Number {
roundable = (roundable == null || !(typeof roundable == "boolean") || !roundable) ? false : true;
var misc = this.coordinates.concat();
var summ:Number = 0;
for (var i in misc) {
summ += Math.pow(misc[i], 2);
}
return (roundable) ? Math.round(Math.sqrt(summ)) : Math.sqrt(summ);
}
private function controllElem(param:Array):Array {
//if there are more than one element in arguments, return shifted
var shifter:Array = (param.length != 1) ? param.shift() : param;
shifter.reverse();
for (var i in shifter) {
//elements can be not a number - in this case just set as 0
shifter[i] = isNaN(shifter[i]) ? 0 : shifter[i];
}
var reverse = shifter.reverse();
return reverse;
}
public function coord(param:Array) {
this.coordinates = this.controllElem(arguments);
}
public function invert():Vector {
var __coord = coordinates;
for (var i in __coord) {
__coord[i] *= -1;
}
trace(__coord);
var __vec:Vector = new Vector(__coord);
trace(__vec.coordinates);
return __vec;
}
}
все хорошо работает за исключением одного:
в выделенном месте создается еще один экземпляр класса,
но проблема в том, что трейсится всегда ноль, хотя по идее должно быть инвертированные координаты вектора. Не могу понять в чем дело...
