![]() |
цикл for
Помогите разобраться с циклом for, знаю что обсуждалось не раз... но...
Код AS1/AS2:
|
Чтобы было десять итераций, нужно либо начинать с 0, либо условие <11.
|
указал 0, рекции никакой.
|
Linkage name заданно верно?.. это не тоже самое что и Instance name...
|
объект появляется один по координатам, x=0 y=0
|
Код AS1/AS2:
|
спасибо, разобрался!
|
в продолжение темы хочу задать вопрос:
есть массив. Любой просто массив. в него добавляются элементы при помощи push(). Т.е. Код AS1/AS2:
Код AS1/AS2:
|
Никак. В as1/2 for..in идет от последнего добавленного свойства/элемента к первому добавленному
|
как неудачно. а про это где-нибудь написано, если не секрет?
|
Из хелпа
Цитата:
|
Можно и от меньшего к большему. Для этого надо сначала применить к массиву метод reverse.
|
да, но все равно это получается перебор методом "пальцем в небо", т.е. неизвестно какой элемент будет первым.
|
Если не хотите читать то, что вам пишут, это ваши личные проблемы.
|
iNils, это вы к чему? Вы сказали, что, если применить к массиву метод reverse, то элементы в нем поменяют свою последовательность. Но при этом по прежнему неизвестно в какой последовательности они будут перечислены, т.е. reverse не дает гарантии, что при использовании for перечисление будет идти с 0 ли с конечного элемента. Более того, при применении метода reverse элементы перечисляются в произвольном поряде, т.е.
Код AS1/AS2:
Так и что я не хочу читать? |
Стоп. Вы меня запутали. Зачем вам вообще for in для массива?
Код AS1/AS2:
|
именно, вот мне и было интересно, можно ли сделать for in без всяких ухищрений типа concat() и почему for in так странно и непонятно работает.
Большое спасибо. |
Почему непонятно? DarkLight выше процитировал хелп о том, что for in работает как FILO (first in - last out). А сортировка и реверс, это ведь не единая операция, а набор действий: перебора, сравнения, удаления и добавления элементов, что опять же дает FILO.
Если внимательно посмотреть, то можно увидеть закономерность. Для четного числа берутся два центральных элемента, потом следующие от центра и тд. Для нечетного тоже самое, только центральный элемент идет последним. |
да, я абсолютно согласен, что это все логично, но только не для массива. FILO абсолютно не предполагает таких операций, как shift и unshift. В данном случае логично предположить, что массив должен работать как очередь с нормальной вставкой элементов в начало и конец очереди. Т.е. вне зависимости от того, в начало мы добавили элемент или в конец, перечисление всегда должно идти в одном и том же направлении. что это за перечисление с конца в начало?
И не совсем понимаю, что значит "можно увидеть закономерность". если я добавил элементы в порядке 1, 2, 3, то reverse должен дать 3, 2, 1, а никак не 2, 1, 3 или что-нибудь типа такого. Вне зависимости от того, при помощи какого метода эти элементы были добавлены. Надеюсь в AS3 это все реализовано значительно лучше. Добавлено через 39 секунд Прошу прощения, наверное мое последнее сообщение. это уже флуд. |
Цитата:
Цитата:
|
Вообще жесть. по-моему все абсолютно не логично. и for и reverse работают с экземпляром одного и того же класса - Array, но один работает с ним как с объектом (Object), а другой работает как с массивом (Array). а вот методы push и unshift вообще работают по своему. и это считается нормально? А самое главное, я не понимаю, что заставило разработчиков AS2 так обойтись с массивом, почему for для массивов нельзя было перегрузить? Ведь кроме for нет других способов пройтись по элементам массива, в том случае, если они идут не подряд.
А есть какой-нибудь стандартный класс, который работает как... даже не знаю, как это назвать, как нормальный массив... ну или как сишный dequeue или queue. Где есть вставка в начало, конец, произвольный доступ к элементам и при этом перечисление происходит в одном и том же порядке? или это только в AS3? |
Нет никакой проблемы, есть только ваше непонятное желание работать с массивом через for..in, а не через for который для этого и нужен.
|
Код AS1/AS2:
|
Object.__resolve() вас спасет, перехватываете обращение к свойству - и отдаете какое угодно значение. Типа такого
Код AS1/AS2:
|
Да не работаете вы с массивом в данном случаи :) Вы работаете с объектом, отсюда и модель другая.
Любую еду можно есть ложкой (проверено двумя годами на камбузе :)), а можно вилкой, но не любую. И способ использования у них не всегда совпадает, вилкой можно прокалывать макароны, а ложкой не получится. Вот вы сейчас пытаетесь именно это сделать :) |
| Часовой пояс GMT +4, время: 11:58. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.