Author Topic: Начало цикла FOR в 4.9 всегда с нуля. Зачем?  (Read 4116 times)

0 Members and 1 Guest are viewing this topic.

Zets

  • Освоившийся
  • **
  • Posts: 66
    • View Profile
    • vk.com
У меня скрипт который ходит по сетке из ссылок. И устанавливая переменную по горизонтали и вертикали можно было начать с определенного места. В 4.9 сделали начало цикла всегда с нуля, как будто переменную нельзя обнулить непосредственно перед циклом. Кто подскажет зачем это и как быть с уже готовым скриптом?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Начало цикла FOR в 4.9 всегда с нуля. Зачем?
« Reply #1 on: February 20, 2014, 11:20:06 PM »
Иногда автоматическое обнуление в цикле полезно но тебе нужно использовать за место FOR цикл WHILE.

Code: (clickermann) [Select]
$a = 100 // начальное значение
WHILE($a < 500)
   // здесь зацикленный скрипт
   
   INC($a,1) // наращиваем переменную
END_CYC

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Начало цикла FOR в 4.9 всегда с нуля. Зачем?
« Reply #2 on: February 21, 2014, 08:21:59 AM »
... Кто подскажет зачем это и как быть с уже готовым скриптом?
В нутри цикла там где используется переменная цикла прибавлять смещение.


Zets

  • Освоившийся
  • **
  • Posts: 66
    • View Profile
    • vk.com
Re: Начало цикла FOR в 4.9 всегда с нуля. Зачем?
« Reply #3 on: February 21, 2014, 09:14:54 AM »
Спасибо! Оба варианта можно применить. Но проще наверно добавить смещение, чем циклы переделывать.
Все равно непонятно зачем это было делать. Обнулить переменную перед циклом проще добавлять смещение к примеру. Это у меня скрипт всего лишь пару сотен строк. А какой нить злющий бот разработанный для 4.7 никто не будет переделывать под 4.9 и люди просто не будут юзать 4.9. Нуу мне так кажется =))

Johnny

  • Создатель
  • Герой форума
  • *
  • Posts: 593
    • View Profile
Re: Начало цикла FOR в 4.9 всегда с нуля. Зачем?
« Reply #4 on: February 21, 2014, 10:25:17 AM »
Все равно непонятно зачем это было делать.
я прекрасно понимаю, как делать надо было бы и вообще считаю что имею кое-какие познания в программировании (потому что инае просто не написал бы такую утилиту).
однако иной раз решение приходит совсем не сразу и прохидится лепить костыли, шаг за шагом делая то что должно получиться в идеале.
поэтому общий ответ на вопрос зачем что-то как правило будет потому что в данном случае у меня не хватило мозгов как сделать иначе, а задачу решить надо было

в случае с циклом в ранних версиях, там была особенность что цикл начинался не с i, а с i+1. таким образом если перед циклом было бы i=0 то первая итерация уже была бы с i+1. так же условие i < N ранее срабатывало на шаг позже. с вводом массивов (которые от нуля) это было уже нетерпимо поэтому цикл пришлось переписать.
с идеале цикл станет по синтаксису таким как в С++. железное начало от 0 - явление временное. все развивается. достаточно вспомнить что пару лет назад вообще было ограничение на вложенные циклы - всего до 2 уровня.

Zets

  • Освоившийся
  • **
  • Posts: 66
    • View Profile
    • vk.com
Re: Начало цикла FOR в 4.9 всегда с нуля. Зачем?
« Reply #5 on: February 21, 2014, 11:33:05 AM »
Спасибо за подробный ответ!)