Автокликер 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 и использую их только при отсутствии других вариантов.