Break

Requests of new features and reports on bugs needs to be fixed

Moderators: Murderator+, Murderator

Post Reply
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Break

Post by Edred »

В свете обсуждения в General перспектив переписывания скриптового модуля хочу написать о наболевшем :)

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

Code: Select all

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


На сегодняшний день выполнить такое можно только вынеся этот цикл в отдельную функцию, а в ней вместо break поставить return. Но этот способ приводит во-первых к излишнему умельчению модулей скрипта, во-вторых (из-за необходимости передавать в эти функции множество параметров и получать некоторые из них обратно) - к раздуванию количества глобальных переменных. Что тоже не есть хорошо. Такой оператор есть практически в каждом языке программирования и, насколько я понимаю, его реализация в интерпретаторе или компиляторе не должна вызывать значительных трудностей.
Yoko
Site Admin
Posts: 1964
Joined: 2004-04-03 16:49:38
Contact:

Post by Yoko »

не брейков единых не хватает в скриптовом модуле. его проблемы в особенностях реализации. вообще автор сделал скриптовый модуль из компилятора, что является экзотическим решением для интерпретаторов.

кстати насчёт прерывания фора, если такое мне требуется, я обычно приспосабливаю для этого изменение переменной счётчика (в твоём случае if i==3 then \ i=5 \ end if)
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Yoko wrote:не брейков единых не хватает в скриптовом модуле. его проблемы в особенностях реализации. вообще автор сделал скриптовый модуль из компилятора, что является экзотическим решением для интерпретаторов.

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


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