![]() |
Не работает цикл, если в for i=0
1) Есть цикл работающий
Код AS1/AS2:
2) Правда ли, что надо опасаться циклов for in, так как они могут давать непредсказуемые результаты после Reversa массива и др. случаях? |
1. Вы присваиваете значение i, если поставите i=1. А нужно указывать условие выполнения цикла. Присвоение не является условием.
Зачем вам это? Чего хотите добиться? 2. Все результаты закономерны. Но могут быть непредсказуемы для вас из-за незнания/непонимания. Опасаться циклов for in не нужно. Но нужно использовать их разумно. |
1) Хотел бы добиться условия, чтобы цикл проходил с конца массива до начального элемента.
То есть, если брать пример, когда счётчик достигал бы 0 номера, то цикл останавливался. В принципе, реализовал это через >=, но не знаю насколько это корректно. |
Код AS1/AS2:
А если делать условием выполнения цикла i == 0, то цикл не выполнится ни разу - потому как i в начале не будет равно 0, следовательно, итераций не будет вообще. |
Видимо, я неправильно читаю код. Волнения по поводу итераций, почему их не будет для кода ниже
Код AS1/AS2:
1) начинать цикл с var i, которая равняется количество элементов минус 1 (так как в массиве есть 0 элемент) 2) далее закончить когда i==0 3) уменьшать на 1 еденицу значение счетчика. А Flash действительно не обрабатывает такой код, как я думаю... Добавлено через 2 минуты 4_а) Подскажите, а как организовать вывод массмва через for in, чтобы все в прямом порядке вывелось - арбуз, дыня, тыква, помидор |
Нет, не так. Условие проверяется при каждой итерации. Итерации продолжаются, пока оно выполняется. Как только оно перестает выполняться, итерации прекращаются. А оно при i == 0 не выполняется сразу, поэтому ничего и не происходит - цикл сразу и останавливается:
1) начинать цикл с var i, которая равняется количество элементов минус 1 (так как в массиве есть 0 элемент) 2) проверить условие, и если оно истинно, выполнить итерацию 3) уменьшать на 1 единицу значение счетчика. Насчет 4) подсказать не могу. Частенько использую for in, но не в случаях, подобным вашему*. Думается, что тут задавать порядок обхода массива лучше все же, не полагаясь на алгоритм for in, а явно задавая текущие индексы. ------------------------ *for in удобен, например, когда используется ассоциативный массив и значения и/или порядок индексов по алгоритму не определен (пример - рандомно на поле добавляются юниты в игре). |
Теперь понял!)
Вы так здорово отвечаете на вопросы и быстро и подробно, что даже диву даешься. Что вами движет?) Вам же деньги не платят за это? |
Некоторым людям нравится помогать тем, кому интересно то же, что и им.
|
Цитата:
По секрету. Например, есть такие плюшки, что в процессе ответа могут раскрываться некоторые нюансы, доселе самому не очевидные. Залезть в доки сподвигает необходимость в 100% быть уверенным, что новичку отпишешься, не соврамши. Еще в сложных случаях - дополнительная гимнастика для ума, чтобы не высохли. :) |
Один человек сказал: Хочешь быть красивым - твори добро.
Помогая, вы делаете доброе дело, а добрые дела 100% вам в жизни помогут! |
| Часовой пояс GMT +4, время: 17:41. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.