Показать сообщение отдельно
Старый 26.01.2007, 01:48
Madeyra вне форума Посмотреть профиль Отправить личное сообщение для Madeyra Найти все сообщения от Madeyra
  № 1  
Ответить с цитированием
Madeyra

Регистрация: Sep 2006
Сообщений: 16
Arrow Проблема с реализацией класса

Есть следующий код:
Код:
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;
	}
}
все хорошо работает за исключением одного:
в выделенном месте создается еще один экземпляр класса,
но проблема в том, что трейсится всегда ноль, хотя по идее должно быть инвертированные координаты вектора. Не могу понять в чем дело...


Последний раз редактировалось Madeyra; 26.01.2007 в 01:53.