Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: Zets on February 20, 2014, 09:38:43 PM

Title: Начало цикла FOR в 4.9 всегда с нуля. Зачем?
Post by: Zets on February 20, 2014, 09:38:43 PM
У меня скрипт который ходит по сетке из ссылок. И устанавливая переменную по горизонтали и вертикали можно было начать с определенного места. В 4.9 сделали начало цикла всегда с нуля, как будто переменную нельзя обнулить непосредственно перед циклом. Кто подскажет зачем это и как быть с уже готовым скриптом?
Title: Re: Начало цикла FOR в 4.9 всегда с нуля. Зачем?
Post by: Oraven on February 20, 2014, 11:20:06 PM
Иногда автоматическое обнуление в цикле полезно но тебе нужно использовать за место FOR цикл WHILE.

Code: (clickermann) [Select]
$a = 100 // начальное значение
WHILE($a < 500)
   // здесь зацикленный скрипт
   
   INC($a,1) // наращиваем переменную
END_CYC
Title: Re: Начало цикла FOR в 4.9 всегда с нуля. Зачем?
Post by: Vint on February 21, 2014, 08:21:59 AM
... Кто подскажет зачем это и как быть с уже готовым скриптом?
В нутри цикла там где используется переменная цикла прибавлять смещение.
Title: Re: Начало цикла FOR в 4.9 всегда с нуля. Зачем?
Post by: Zets on February 21, 2014, 09:14:54 AM
Спасибо! Оба варианта можно применить. Но проще наверно добавить смещение, чем циклы переделывать.
Все равно непонятно зачем это было делать. Обнулить переменную перед циклом проще добавлять смещение к примеру. Это у меня скрипт всего лишь пару сотен строк. А какой нить злющий бот разработанный для 4.7 никто не будет переделывать под 4.9 и люди просто не будут юзать 4.9. Нуу мне так кажется =))
Title: Re: Начало цикла FOR в 4.9 всегда с нуля. Зачем?
Post by: Johnny on February 21, 2014, 10:25:17 AM
Все равно непонятно зачем это было делать.
я прекрасно понимаю, как делать надо было бы и вообще считаю что имею кое-какие познания в программировании (потому что инае просто не написал бы такую утилиту).
однако иной раз решение приходит совсем не сразу и прохидится лепить костыли, шаг за шагом делая то что должно получиться в идеале.
поэтому общий ответ на вопрос зачем что-то как правило будет потому что в данном случае у меня не хватило мозгов как сделать иначе, а задачу решить надо было

в случае с циклом в ранних версиях, там была особенность что цикл начинался не с i, а с i+1. таким образом если перед циклом было бы i=0 то первая итерация уже была бы с i+1. так же условие i < N ранее срабатывало на шаг позже. с вводом массивов (которые от нуля) это было уже нетерпимо поэтому цикл пришлось переписать.
с идеале цикл станет по синтаксису таким как в С++. железное начало от 0 - явление временное. все развивается. достаточно вспомнить что пару лет назад вообще было ограничение на вложенные циклы - всего до 2 уровня.
Title: Re: Начало цикла FOR в 4.9 всегда с нуля. Зачем?
Post by: Zets on February 21, 2014, 11:33:05 AM
Спасибо за подробный ответ!)