Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Пытливый on September 16, 2017, 12:20:03 PM
-
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
Возможно конечно что я как-то неправильно с метками работаю. Тогда где я косячу?
-
Тогда где я косячу?
GOTO
Синтаксис
GOTO (label) - переводит интерпретацию на строку с меткой
Параметры
label - имя метки
Пример
goto(skip)
logwrite("nope") // пропускается
skip:
logwrite("yea") // выполнится
Примечания
Переход на метку допускается в рамках блоков одного уровня вложенности. Текстовая метка задается без кавычек, в тексте скрипта после текстовой метки обязательно должно идти двоеточие ":", как в примере. Метка занимает всю строку
Вопрос: ГДЕ ТЫ КОСЯЧИШЬ?
Ответ: СПРАВКУ НЕ ЧИТАЕШЬ!
-
Я уже сам понял, что двоеточие не с той стороны, хотя вроде раз 10 примеры посмотрел. Разные языки, разный синтаксис. Бывает.
-
Мало того. Еще и из цикла через GOTO() выпрыгиваешь. А этого делать не рекомендуется.
-
Выпрыгиваю потому-что надо его прервать по условию. Конструкция while не очень подходит под мою задачу, а стандартного Break не предусмотрено синтаксисом разработчика.
Криминала в прерывании цикла таким способом я не вижу, а вот если бы я метку поставил вне тела подпрограммы, тогда мы получили бы потенциальную проблему.
Но я от goto тоже отказался, в пользу установки счетчика цикла в максимальное значение.
-
Но я от goto тоже отказался, в пользу установки счетчика цикла в максимальное значение.
Это правильно. А вот криминал (http://crapware.aidf.org/forum/index.php?topic=3429.msg23482#msg23482).
-
Я читал эту статью, когда искал решение выхода из цикла, приведенные примеры, как я и написал ранее касаются в первую очередь подпрограмм, вызовы которых помещаются в стек и goto последовательность снятия с вершины стека нарушает. А вот в приведенном мной примере стек не используется, а потому такое прерывание вполне допустимо, хотя и стремно. Сам не люблю goto и использую их только при отсутствии других вариантов.