Switch
Перейти к навигации
Перейти к поиску
Описание
Switch - оператор позволяет сделать логическое ветвление. В зависимости от значения переменой может быть выполнен только определенный код. В отличии от if не ограничен только двумя блоками правда/ложь.
Синтаксис
Привязка к окну: Нет
Работа со свернутым окном: Да
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
Добавил конструкцию 'switch'. В строке с 'case' после двоеточия может присутствовать команда. Если в последнем 'case' не указано 'значение', и среди остальных не было совпадения, то выполнится последний (сработает как 'else'). Оператор 'break' прерывает выполнение текущего 'switch'. Если в текущем 'case' нет оператора 'break', то выполнится следующий 'case', и так далее пока не встретится 'break'.
switch <значение>
case <значение 1>: [команда]
[команда]
case <значение 2>:
[команда]
break
case :
[команда]
end_switch
2.39
Исправил 'break' при использовании вложенных 'switch'.
2.41
Исправил 'case:'.