Switch
Описание
Switch - оператор позволяет сделать логическое ветвление. В зависимости от значения переменой может быть выполнен только определенный код. В отличии от if не ограничен только двумя блоками правда/ложь.
Синтаксис
Привязка к окну: Нет <br>Работа со свернутым окном: Да
switch <значение> case <значение 1>: [команда] [команда] case <значение 2>: [команда] break case : [команда] end_switch
Примеры
// Пример 1 set #a 2 switch #a case 1: msg Переменная "#a" = 1 //если #a = 1 break case 2: msg Переменная "#a" = 2 //если #a = 2 break case 3: msg Переменная "#a" = 3 //если #a = 3 break end_switch end_script
// Пример 2 set #a 7 switch #a case 1: case 2: case 3: case 4: case 5: msg Переменная "#a" от 1 до 5 //если #a от 1 до 5 break case 6: case 7: case 8: case 9: msg Переменная "#a" = от 6 до 9 //если #a от 6 до 9 break case : msg Переменная "#a" меньше 1 или больше 9 //если #a меньше 1 или больше 9 end_switch end_script
// Пример 3 // В отличии от If, Switch учитывает регистр при сравнении set $a Андрей if $a = андрей log +++ end_if if $a = Андрей log +++ end_if switch $a case андрей: log андрей case Андрей: log Андрей end_switch End_script // в результате в If выполнятся оба условия , а в Switch только одно.
// Пример 4 // Проверить цвет в точке, в зависимости от полученного выполнить определённое действие init_arr %a (1) 16777215 178 13538882 // искомые цвета (16777215 178 13538882) get color #color 475, 251 // получить цвет в координатах 475, 251 и присвоить его переменной '#color' switch #color // в зависимости от полученного цвета будет выполнено одно из условий case %a [1 1]: hint Первый цвет break case %a [1 2]: hint Второй цвет break case %a [1 3]: hint Третий цвет break end_switch
Смотрите также
История развития
2.33 <br>Добавил конструкцию 'switch'. В строке с 'case' после двоеточия может присутствовать команда. Если в последнем 'case' не указано 'значение', и среди остальных не было совпадения, то выполнится последний (сработает как 'else'). Оператор 'break' прерывает выполнение текущего 'switch'. Если в текущем 'case' нет оператора 'break', то выполнится следующий 'case', и так далее пока не встретится 'break'.
switch <значение> case <значение 1>: [команда] [команда] case <значение 2>: [команда] break case : [команда] end_switch
2.39 <br>Исправил 'break' при использовании вложенных 'switch'.
2.41 <br>Исправил 'case:'.