when
Назначение
Функция when является удобной альтернативой написанию крупных выражений, состоящих из вложенных if-выражений. Функция when аналогична синтаксису "подключиться и выбрать", который часто используется в компьютерных языках программирования. Функция when подходит тогда, когда вы хотите получить одно из нескольких разных значений в зависимости от условия.
Логика функции аналогична следующему выражению: если результат первого выражения истинный, то возвращается первое значение; в противном случае, если результат второго выражения истинный, возвращается второе значение;в противном случае, если результат третьего выражения истинный, то возвращается третье значение, и т.д.
Аргументы
Функция требует наличия минимум трех аргументов:
-
Первый аргумент должен быть значением или выражением, которое возвращает значение.
-
Второй аргумент должен быть значением.
-
Третий аргумент также должен быть значением.
Оставшиеся аргументы необязательны. Однако каждый оставшийся аргумент должен быть в паре. Если вы добавляете четвертый аргумент, вы должны добавить к нему в пару пятый аргумент. Более того, необходимо убедиться, что каждый из аргументов (в этом случае - третий и пятый) включает один и тот же тип данных.
Обратите внимание, что в примере синтаксиса второй аргумент называется аргументом события. В функции when можно иметь любое число аргументов события (как минимум один). Для каждого события нужно иметь соответствующее значение возврата. Например, в вышеприведенном синтаксисе значение 1 соответствует событию1, а значениеN соответствует событиюN.
Последним аргументом функции when является аргумент "иначе". Это возвращаемое значение, которое возвращается в том случае, когда ни один из аргументов события не оказывается эквивалентным аргументу выражения (первому аргументу).
Функция when работает путем сравнения первого аргумента (выражения) с каждым из данных аргументов события. Аргументы события оцениваются слева направо. Сравнение проводится относительно равенства. Если выражение оказывается эквивалентными одному из событий, то возвращается соответствующее значение этого события.
Возвращаемое значение
Функция возвращает результат события - значение "истина".
Если тип значения, которое возвращается выражением (первый аргумент), по типу данных не совпадает с типом, который используется для сравнения с иным аргументом события, то возникает ошибка синтаксиса. Таким же образом, если любые возвращаемые типы отличаются друг от друга, то возникает ошибка синтаксиса.
Тем не менее, обратите внимание, что тип возвращаемых значений не всегда должен совпадать по типу данных с выражением и аргументами события. Фактически в выражении из нашего примера мы используем числа для выражения и аргументов события, и строки для аргументов возвращаемого значения. Поскольку выражения и события представлены числами, а возвращаемые значения совпадают по типу (строковые), мы следуем правилам использования типа данных.
Если один из аргументов нулевой, функция возвращает нулевое значение.