Switch

Материал из UoPilot
Перейти к навигации Перейти к поиску

Описание

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

Смотрите также

If
Break

История развития

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:'.