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

Основной раздел => Общие вопросы => Topic started by: Пытливый on September 16, 2017, 12:20:03 PM

Title: Метки в 4.12 работают?
Post by: Пытливый on September 16, 2017, 12:20:03 PM
Code: [Select]
print("Start")
goto(EndFor)
for($n=0, $n<3)
  print($n)
if ($n=1)
goto(EndFor)
//$n=3
end_if
end_cyc
:EndFor
print("Finish")
Наблюдается полный игнор goto
Возможно конечно что я как-то неправильно с метками работаю. Тогда где я косячу?
Title: Re: Метки в 4.12 работают?
Post by: open_78 on September 16, 2017, 12:29:33 PM
Тогда где я косячу?
GOTO

Синтаксис
GOTO (label) - переводит интерпретацию на строку с меткой


Параметры
label - имя метки


Пример

goto(skip)

logwrite("nope") // пропускается
skip:
logwrite("yea")  // выполнится



Примечания
Переход на метку допускается в рамках блоков одного уровня вложенности. Текстовая метка задается без кавычек, в тексте скрипта после текстовой метки обязательно должно идти двоеточие ":", как в примере. Метка занимает всю строку
Вопрос: ГДЕ ТЫ КОСЯЧИШЬ?
Ответ: СПРАВКУ НЕ ЧИТАЕШЬ!
Title: Re: Метки в 4.12 работают?
Post by: Пытливый on September 16, 2017, 12:33:06 PM
Я уже сам понял, что двоеточие не с той стороны, хотя вроде раз 10 примеры посмотрел. Разные языки, разный синтаксис. Бывает.
Title: Re: Метки в 4.12 работают?
Post by: open_78 on September 16, 2017, 12:44:55 PM
Мало того. Еще и из цикла через GOTO() выпрыгиваешь. А этого делать не рекомендуется.
Title: Re: Метки в 4.12 работают?
Post by: Пытливый on September 16, 2017, 02:18:26 PM
Выпрыгиваю потому-что надо его прервать по условию. Конструкция while не очень подходит под мою задачу, а стандартного Break не предусмотрено синтаксисом разработчика.
Криминала в прерывании цикла таким способом я не вижу, а вот если бы я метку поставил вне тела подпрограммы, тогда мы получили бы потенциальную проблему.
Но я от goto тоже отказался, в пользу установки счетчика цикла в максимальное значение.
Title: Re: Метки в 4.12 работают?
Post by: open_78 on September 16, 2017, 02:45:34 PM
Но я от goto тоже отказался, в пользу установки счетчика цикла в максимальное значение.
Это правильно. А вот криминал (http://crapware.aidf.org/forum/index.php?topic=3429.msg23482#msg23482).
Title: Re: Метки в 4.12 работают?
Post by: Пытливый on September 16, 2017, 03:20:04 PM
Я читал эту статью, когда искал решение выхода из цикла, приведенные примеры, как я и написал ранее касаются в первую очередь подпрограмм, вызовы которых помещаются в стек и goto последовательность снятия с вершины стека нарушает. А вот в приведенном мной примере стек не используется, а потому такое прерывание вполне допустимо, хотя и стремно. Сам не люблю goto и использую их только при отсутствии других вариантов.