Page 1 of 1

Break

Posted: 2004-09-13 15:56:23
by Edred
В свете обсуждения в General перспектив переписывания скриптового модуля хочу написать о наболевшем :)

Очень хотелось бы увидеть в синтаксисе языка команду Break. Эта команда (обычно) прерывает исполнение циклов while, repeat, for. То есть, например:

Code: Select all

for i=1 to 5
   if i == 3 then
      break
   endif
next


На сегодняшний день выполнить такое можно только вынеся этот цикл в отдельную функцию, а в ней вместо break поставить return. Но этот способ приводит во-первых к излишнему умельчению модулей скрипта, во-вторых (из-за необходимости передавать в эти функции множество параметров и получать некоторые из них обратно) - к раздуванию количества глобальных переменных. Что тоже не есть хорошо. Такой оператор есть практически в каждом языке программирования и, насколько я понимаю, его реализация в интерпретаторе или компиляторе не должна вызывать значительных трудностей.

Posted: 2004-09-13 16:33:22
by Yoko
не брейков единых не хватает в скриптовом модуле. его проблемы в особенностях реализации. вообще автор сделал скриптовый модуль из компилятора, что является экзотическим решением для интерпретаторов.

кстати насчёт прерывания фора, если такое мне требуется, я обычно приспосабливаю для этого изменение переменной счётчика (в твоём случае if i==3 then \ i=5 \ end if)

Posted: 2004-09-13 17:12:18
by Edred
Yoko wrote:не брейков единых не хватает в скриптовом модуле. его проблемы в особенностях реализации. вообще автор сделал скриптовый модуль из компилятора, что является экзотическим решением для интерпретаторов.

кстати насчёт прерывания фора, если такое мне требуется, я обычно приспосабливаю для этого изменение переменной счётчика (в твоём случае if i==3 then \ i=5 \ end if)


Ну фор я привел только для примера... Можно конечно вводить спецпеременную, специально для прерывания циклов, проверку ее в условия, эх... но гимор страшный. Насчет способа реализации - я читал. И сам поражался... А в языке конечно не хватает оператора Case, но вряд ли он и будет реализован. Хотя для него тоже нужен break.