Branch оператор используется для условно выполнения кода, в случае если есть несколько вариантов исполнения в зависимости от значения переменной.

Синтаксис

править

branch <variable>
    on <value> [or <value>]...
        <statements>
    [on <value> [or <value>]...
        <statements> ]...
    [else
        <statements>]

branch <variable> 
    on <value>, <statement>
    on <value>, <statement> 
    [else, <statement>]

Значение переменной variable сравнивается со значениями value и выполняется соответствующее выражение. Если не найдено совпадений, выполняется выражение else.

  • Переменная variable должна быть целое число, символ, перечисление или строка.
  • Выражения их соответствие (<value>) должны быть константами (например 0, 1, с'х', State.Off, "foo").

Вторая форма является сокращенной формой записи, где значение и соответствующее выражение должны быть на одной строке. Несколько значений могут быть указаны с помощью ключевого слова or.

Пример

править

    # Notice the keywords `branch` and 
    # `on` as well as the indentation under each `on` clause
    x = 2 
    branch x 
        on 1 
            isEven = false 
            word = 'one' 
        on 2 
            isEven = true
            word = 'two' 
        on 3 
            isEven = false 
            word = 'three' 
        else
            word='UNKNOWN'
    assert isEven 
    assert word == 'two'

Сокращенная форма, с одним выражением.

    x = 'toof' 
    branch x 
        on 'woof', word = 'one' 
        on 'doof', word = 'three' 
        else, word = 'else' 
    assert word == 'else'

Сокращенная форма, с несколькими значениями сравнения.

    x = 2 
    branch x 
        on 1 or 2 or 3, word = 'number' 
        else, word = 'else' 
    assert word == 'number'