пятница, 26 августа 2022 г.

MDC: команда elseif

На комитете было обсуждение предложения команды elseif как во многих других языках, чтобы можно было написать
if arg1 commands1
elseif arg2 commands2
elseif arg3 commands3
else  commands4
Рассматривалось поведение команды elseif такеое чтобы команда перед выполнением провериля значение $test как команда else и если значение не ноль то выполнялся бы перевод строки, если ноль то вычислялось бы значение аргумента и если не ноль то взводить значение $test и выполнять команды дальше, иначе выполнить перевод строки.

То есть трактовка аналогичная замене
elseif arg
на
else if arg
Было поддержано мое предложение также как для команды if отказаться от постусловий как на команду так и на ее аргументы и трактовать как команду с обязательным аргументом, не допуская безаргументную форму как у команды if. Иначе мы получаем априори невыполняющийся код вида
else  if  commands
И все бы было хорошо, но тут я заметил что в такой трактовке команда elseif сильно отличается от всех остальных команд MUMPS. Если все команды могут быть заменены
cmd arg1,arg2,arg3
на
cmd arg1 cmd arg2 cmd arg3
то для команды elseif такая замена выполняется лишь через другие команды:
elseif arg1,arg2
это либо
elseif arg1 if arg2
либо
else if arg1 if arg2
Что категорически нарушает организацию языка и трактовку команд в нем.

Как вариант можно было бы оставить лишь один аргумент, но это опять же нарушает общую методику языка MUMPS.

Поэтому пока предложение по команде elseif остается не одобренным.

Комментариев нет:

Отправить комментарий