Показать сообщение отдельно
Старый 23.02.2012, 22:23
HardCoder вне форума Посмотреть профиль Отправить личное сообщение для HardCoder Найти все сообщения от HardCoder
  № 1  
Ответить с цитированием
HardCoder
 
Аватар для HardCoder

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
По умолчанию Как отсортировать Vector

Здравствуйте. Мне нужно отсортировать, например, вектор Vector.<SomeObject> по полю prop:uint каждого элемента. То есть проверить каждый элемент вектора и узнать его prop (чем выше prop - тем выше индекс элемента). В справке нет ни одного примера как это сделать. В гугле тоже нет (только информация как сортировать вектор не стандартным sort()). Нашел простой код:
Код AS3:
public function initTurn():void {
	var test:Vector.<int> = new <int>[3,5,2,3,9,0,1,8];
	test.sort(compare);
	for (var i:uint = 0; i < test.length; i++) {
		trace(test[i]);
	}
	// выводит 0,1,2,3,3,5,8,9
}
 
private function compare(x:int, y:int):Number {
	if (x > y) {
		return 1;
	} else if (x < y) {
		return -1;
	} else {
		return 0;
	}
}
Захотел в нем разобраться и переделать под свой случай. Но, как говорится: "смотрю в книгу - вижу фигу". Что это за x и y, откуда они берутся, почему при вызове test.sort(compare) - не передаются никакие параметры, кто получает Number, возвращаемый функцией compare, и что оно с ним делает?
Пожалуйста, подскажите код для сортировки вектора с пользовательским типом (не int, Number, uint). Или, хотя бы, подскажите что за колдовство происходит при вызове этой строчки:
Код AS3:
test.sort(compare);
, может дальше как-нибудь сам разберусь.
__________________
Я мало чего умею, но зато хорошо умею учиться...