TheLinsus

Как выйти из скрипта

Вопрос

Имеется много разных IFов и других циклов в скрипте. 

1. Как в любом месте закончить выполнение скрипта?

2. Как использовать Goto?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

4 ответа на этот вопрос

P.S.

1.

Если в скрипте множество циклов, в ходе выполнения которых, при определенных условиях, так же должны быть осуществлен выход -

добавь переменную _exit, и ставь ее в true

а по выходу из цикла проверяй.

Пример:

 

_exit = false;

while {true} do

{

  if (_a > _b) exitWith {}; // выйдет из цикла while

  {

    if (_x < _a) exitWith {_exit = true;}; // выйдет из цикла forEach, - поэтому чтобы выйти из цикла while ставим переменную _exit в true

  } forEach _xxx;

if (_exit) exitWith {}; // выйдет из цикла while, если _exit - true

  sleep 1;

};

 

*В множестве вложенных циклов, все точно так же - по завршению цикла достаточно будет проверять переменную _exit

2. использование всяких GoTo, BreakOut и т.п. это "архаизм" - появившийся в эпоху становления языков программирования. Когда логика программного кода еще была не продумана, и не освоена.

Любое использование гото в компании - производителя софта, = увольнению. т.к. говнокодинг. - Следствие не правильной логики приложения, и попытки извернутся, вместо правильного написания.

хоть процедурно, хоть используя ООП - надо правильно составить логику кода, и проблем не будет.

Изменено пользователем NoNameUltima (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Забронировать это рекламное место


P.S.

1.

Если в скрипте множество циклов, в ходе выполнения которых, при определенных условиях, так же должны быть осуществлен выход -

добавь переменную _exit, и ставь ее в true

а по выходу из цикла проверяй.

Пример:

 

_exit = false;

while {true} do

{

  if (_a > _b) exitWith {}; // выйдет из цикла while

  {

    if (_x < _a) exitWith {_exit = true;}; // выйдет из цикла forEach, - поэтому чтобы выйти из цикла while ставим переменную _exit в true

  } forEach _xxx;

if (_exit) exitWith {}; // выйдет из цикла while, если _exit - true

  sleep 1;

};

 

*В множестве вложенных циклов, все точно так же - по завршению цикла достаточно будет проверять переменную _exit

2. использование всяких GoTo, BreakOut и т.п. это "архаизм" - появившийся в эпоху становления языков программирования. Когда логика программного кода еще была не продумана, и не освоена.

Любое использование гото в компании - производителя софта, = увольнению. т.к. говнокодинг. - Следствие не правильной логики приложения, и попытки извернутся, вместо правильного написания.

хоть процедурно, хоть используя ООП - надо правильно составить логику кода, и проблем не будет.

Благодарю за подробный ответ. Только один вопрос: ExitWith выходит же только из цикла, в котором он находится?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

из текущего кода  выходит.

 

_a = 1;

_b = 1;

_c = _a + _b;

if (_c < 10) exitWith {};

_a = 5; // выполнено не будет

Изменено пользователем NoNameUltima (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Похожие публикации

    • Автор: Miduznya
      Как сделать стартовый лут на сервере???
    • Автор: Miduznya
      Как изменить данные игрока "статы" в  -   ?
      Например было 400 скорость, а нужно сделать ниже, например 300 или меньше.
    • Автор: NoNameUltima
      Еще одна тема, по которой возникают вопросы - как залить свой мод в steam
      Видео пару минут, надеюсь все понятно
       
    • Автор: VIRrusR
       Такой вот вопрос: как организовать проверку костюма персонажа (ОЗК) на предмет повреждения? Чтоб если костюм повреждён, нехорошие геймеры в заражённые зоны не пролезли, а, соответственно, отравились, и, как им и положено, умерли страшной и мучительной смертью.
    • Автор: VIRrusR
      Собственно, такой вопрос - очень уж мешает мне сарай один! Ну как гвоздь в том самом месте... Убираю упоминание об объекте в файле mapgrouppos.xml - спавнится, как ни в чём не бывало! Меняю ему координаты в том же файле - стоит на своём месте, зараза! Возможно ли как-то победить этот чёртов сарай?!