Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsSpPtGd 74 of 288 menu
◀ ▶

Защита образца в Rust

Иногда одной формы числа или значения мало: нужно еще проверить диапазон или сравнение. После имени в образце пишут слово if и выражение. Такая запись называется защитой: ветка срабатывает только когда и образец подошел, и условие истинно.

Защита помогает не плодить лишние ветки с одинаковым телом. Сначала проверяют более узкие случаи с условием, затем оставляют запасной образец для всего остального.

Разберем число с порогом десять:

fn main() { let n = 15; let label = match n { x if x > 10 => "many", _ => "few", }; println!("{}", label); }

На экране "many". Переменная x связана с числом в образце, а защита x > 10 решает, подходит ли эта ветка.

Тот же прием работает с несколькими защищенными ветками перед запасной:

fn main() { let score = 7; let mark = match score { x if x >= 9 => "high", x if x >= 5 => "mid", _ => "low", }; println!("{}", mark); }

Дано число:

let n = 3;

Запишите разбор с защитой: при значении больше нуля выведите "plus", иначе "other".

Дано число:

let age = 17;

Сделайте две защищенные ветки для совершеннолетнего и для ребенка до восемнадцати, затем запасную, и выведите короткую метку.

Скажите, сработает ли ветка с защитой, если образец не совпал с значением, даже когда условие защиты истинно.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить