Реляционный паттерн позволяет сравнить передаваемое в конструкцию значение с некоторыми значениями с помощью операций сравнения. Паттерн позволяет использовать все стандартные операции сравнения: ==, !=, <, >, <=, и >=. Например, в зависимости от суммы вклада проценты по этому вкладу могут отличаться. Рассчитаем сумму процентов в зависимости от суммы вклада с использованием реляционного паттерна:
void main() { print(calculate(-200)); // 0 print(calculate(0)); // 0 print(calculate(10000)); // 500 print(calculate(60000)); // 6000 print(calculate(200000)); // 40000 } double calculate(int sum) { return switch(sum) { <= 0 => 0, // если sum меньше или равно 0, возвращаем 0 < 50000 => sum * 0.05, // если sum меньше 50000, возвращаем sum * 0.05 < 100000 => sum * 0.1, // если sum меньше 100000, возвращаем sum * 0.1 _ => sum * 0.2 // в остальных случаях возвращаем sum * 0.2 }; }
Логический паттерн позволяет использовать логический оператор && (логическое умножение или операция логического И) и оператор || (логическое сложение или операция логического ИЛИ) для объединения операций сравнения. Например, передадим в функцию возраст и возвратим соответствующее сообщение:
void main() { print(checkAge(200)); // Недействительный возраст print(checkAge(0)); // Недействительный возраст print(checkAge(17)); // Доступ запрещен print(checkAge(18)); // Доступ разрешен } String checkAge(int age) { return switch(age) { <1 || >110 => "Недействительный возраст", // если age больше 110 и меньше 1 >=1 && <18 => "Доступ запрещен", // если age равно или больше 1 и меньше 18 _ => "Доступ разрешен" // в остальных случаях }; }