РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
6 of 723 menu

Страж when

Страж when используется в конструкции switch вместе с шаблонами (patterns) для добавления дополнительного условия. Он позволяет выполнить ветку кода только в том случае, если значение совпало с шаблоном и при этом указанное после when логическое выражение вернуло true. Если условие ложно, Dart переходит к следующей ветке. Страж when не является самостоятельным оператором, а только дополняет шаблон в case.

Синтаксис

switch (value) { case pattern when condition: // code case pattern when condition: // code default: // code }

Пример

Давайте проверим число: если оно больше нуля и меньше десяти, выведем сообщение. В противном случае выведем другое сообщение:

void main() { int num = 5; switch (num) { case > 0 when num < 10: print('number is between 0 and 10'); default: print('number is out of range'); } }

Результат выполнения кода:

"number is between 0 and 10"

Пример

Давайте используем страж when вместе с шаблоном списка. Проверим, что список содержит ровно три элемента и первый элемент больше нуля:

void main() { var list = [1, 2, 3]; switch (list) { case [var a, var b, var c] when a > 0: print('first element is positive'); default: print('condition is not met'); } }

Результат выполнения кода:

"first element is positive"

Пример

Давайте проверим строку: если она начинается с 'a' и её длина больше трёх, выведем одно сообщение, иначе - другое:

void main() { String str = 'abcde'; switch (str) { case var s when s.startsWith('a') && s.length > 3: print('string matches'); default: print('string does not match'); } }

Результат выполнения кода:

"string matches"

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

  • конструкция switch,
    которая выполняет ветвление по шаблонам
  • ключевое слово case,
    которое задаёт шаблон в switch
  • конструкция if-case,
    которая проверяет шаблон в условии
  • шаблоны patterns,
    которые используются вместе с when
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить