![]() |
Как отсортировать Vector
Здравствуйте. Мне нужно отсортировать, например, вектор Vector.<SomeObject> по полю prop:uint каждого элемента. То есть проверить каждый элемент вектора и узнать его prop (чем выше prop - тем выше индекс элемента). В справке нет ни одного примера как это сделать. В гугле тоже нет (только информация как сортировать вектор не стандартным sort()). Нашел простой код:
Код AS3:
Пожалуйста, подскажите код для сортировки вектора с пользовательским типом (не int, Number, uint). Или, хотя бы, подскажите что за колдовство происходит при вызове этой строчки: Код AS3:
|
общий смысл вкратце:
Код AS3:
|
Причем тут массив? Метод сортировки у Vector свой.
Описание параметров, которые он принимает: Цитата:
|
СлаваRa, спасибо, теперь понял: x и y - это просто перебираемые элементы вектора :). В таком случае вот как надо:
Код AS3:
|
ну да, так и есть
|
Вот я не хороший человек!!! Только сейчас увидел про функцию сравнения в справке :). Читал когда-то давно и то ли не понял, то ли не дочитал. А сейчас - вместо того чтобы еще раз посмотреть - начал искать черную кошку в темной комнате, которой в этой комнате нет...
|
Что смешно, так это то, что этот пример - бездумная копия из мануала, на самом деле не нужно возвращать строго -1, 0 или 1, достаточно просто возвращать положительное, отрицательное и 0. Т.е. функция сортировки может выглядеть так:
Код AS3:
Код:
1 / (1 / y - 1 / x) |
Цитата:
|
Я проверил - у меня работает :)
В конце концов, если так уж прям замуж невтерпеж, то Код AS3:
|
Цитата:
|
Там и так везде int, ничего приводить не надо.
|
То что ты ничего не приводишь, не значит, что ничего не приводиться
|
А кто говорит, что ничего не приводится? И где опасность? Глючащий пример в студию.
|
Да будет это работать, БУДЕТ! Я и не говорил что не будет! Просто указал, что будет NaN. А NaN это NaN и с ним шутки плохи. По этому вариант опасный.
И вообще я всегда юзал такой вариант Код AS3:
В моей документации именно Number просят возвращять http://help.adobe.com/en_US/FlashPla...tor.html#sort() |
Во флеше нет "на самом деле" разницы между Number и int. Т.е. ее нет тогда, когда тип нужно определить динамически. Поэтому, не смотря на то, что в документации написано Number - возвращать int никто не запрещает, и наоборот тоже (естесственно, при условии, что проверок времени компиляции не делается).
Если бы такие проверки делались, то, очевидно, пришлось бы делать что-то типа: Код:
Number(int(x - y));Код:
isNaN(x - y) ? 0 : x - y;ЗЫ. Опасность, как я уже и говорил, возникает тогда, когда разность приведет к переполнению, изза чего может поменяться знак. |
Не стоит путать автоприведение типов и реальное отсутствие разницы. То что компилятор не ругается на автоприведение инта к флоуту и наоборот, это не значит, что за этим не стоит следить.
Холиварить не хочу, просто оставлю пару контра примеров, которые показывают что приведение типов происходит. Код AS3:
|
| Часовой пояс GMT +4, время: 14:29. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.