Обзор языка - условные операторы

Обзор языка - условные операторы

Часто необходимо изменить естественный порядок выполнения скрипта в зависимости от условия или серии условий. Больше ли это число другого? Или, есть ли в этой строке буква 'ы'?

Условия рассматриваются, как True (Истина, не ноль, не пустая строка) и False (Ложь, ноль, пустая строка). Условия обычно используют операторы сравнения, такие как ==, <>, >=.


Следующие условные операторы доступны в AutoIt:

Все три оператора похожи и предназначены для выполнения разного кода в зависимости от данного условия (или условий). Пример, использующий If и Message Box:

$var = -20

If $var > 0 Then
    MsgBox(0, "Пример", "$var положительное!")
ElseIf $var < 0 Then
    MsgBox(0, "Пример", "$var отрицательное!")
Else
    MsgBox(0, "Пример", "$var равно нулю.")
EndIf


В примере выше, выражение $var > 0 вычисляется, как False, поскольку переменная меньше нуля. Поскольку первое условие не выполняется, проверяется следующее условие. Выражение $var < 0, вычисляется, как True. Это означает, что оператор If выполнит второй MsgBox, который покажет, что $var отрицательное!.



Оператор Select очень похож, но обычно используется в ситуации, когда необходимо проверить множество условий.
Этот оператор обычно легче читать, чем длинный блок с If...ElseIf. Например:

$var = 30

Select
     Case $var > 1 AND $var <= 10
         MsgBox(0, "Пример", "$var больше 1")

     Case $var > 10 AND $var <= 20
         MsgBox(0, "Пример", "$var больше 10")

     Case $var > 20 AND $var <= 30
         MsgBox(0, "Пример", "$var больше 20")

     Case $var > 30 AND $var <= 40
         MsgBox(0, "Пример", "$var больше 30")

     Case $var > 40
         MsgBox(0, "Пример", "$var больше 40")
EndSelect


Оператор Switch очень похож на Select, но обычно используется, когда одно и тоже выражение сравнивается с различными значениями.

$var = 30

Switch Int($var)
     Case 1 To 10
         MsgBox(0, "Пример", "$var больше 1")

     Case 11 To 20
         MsgBox(0, "Пример", "$var больше 10")

     Case 21 To 30
         MsgBox(0, "Пример", "$var больше 20")

     Case 31 To 40
         MsgBox(0, "Пример", "$var больше 30")

     Case Else
         MsgBox(0, "Пример", "$var больше 40 или меньше 0 или равно 0")
EndSwitch

Для любого из этих операторов будет выполнена первая группа операторов, следующая после истинного условия. Все остальные условия и операторы будут проигнорированы.