Конструкция else if в Rust
Конструкция else if позволяет задавать
условия в блоке else. Отдельного одного
слова для «иначе если» нет: пишут два слова.
Несколько веток проверяют сверху вниз, пока
одна не окажется истинной.
Давайте посмотрим на примере:
let num = 1;
if num == 1 {
println!("variant 1"); // сработает это
} else if num == 2 {
println!("variant 2");
} else if num == 3 {
println!("variant 3");
}
Пусть переменная num принимает значение
1, 2 или 3. Для каждого
значения нужна своя строка. Задачу решают
тремя отдельными if без else:
let num = 1;
if num == 1 {
println!("variant 1"); // сработает это
}
if num == 2 {
println!("variant 2");
}
if num == 3 {
println!("variant 3");
}
Преимущество else if перед несколькими
отдельными if - возможность поймать
ситуацию, когда значение переменной num
не подходит ни под одно из условий:
let num = 1;
if num == 1 {
println!("variant 1"); // сработает это
} else if num == 2 {
println!("variant 2");
} else if num == 3 {
println!("variant 3");
} else {
println!("variant not supported");
}
Как только одна проверка дала «да», остальные ниже не смотрят. Порядок важен: более частый или более строгий случай ставят выше.
Разделим оценку по баллам:
let score = 75;
if score >= 90 {
println!("A");
} else if score >= 70 {
println!("B");
} else {
println!("C");
}
При другом числе сработает другая строка цепочки:
let score = 95;
if score >= 90 {
println!("A");
} else if score >= 70 {
println!("B");
} else {
println!("C");
}
Дано число:
let n = 0;
При 0 выведите "zero", при 1
выведите "one", иначе "many".
Дано число:
let age = 15;
До 13 выведите "child", до 18
выведите "teen", иначе "adult".
Дана строка:
let plan = "basic";
Для "free" выведите "zero", для
"basic" выведите "low", иначе
"high".
В переменной day лежит какое-то число
из интервала от 1 до 31. Определите,
в какую декаду месяца попадает это число:
в первую, вторую или третью.
Модифицируйте предыдущую задачу так, чтобы,
если в переменной day будет не число
от 1 до 31, выдавалось сообщение
об ошибке.
Пусть в переменной min_part хранится
количество минут от 0 до 59.
Давайте определим, в какую четверть часа
попадает это количество. Цепочку удобнее
записать через else if, чтобы сработала
только одна ветка:
let min_part = 10;
if min_part >= 0 && min_part <= 14 {
println!("1 quarter"); // сработает это
} else if min_part >= 15 && min_part <= 29 {
println!("2 quarter");
} else if min_part >= 30 && min_part <= 44 {
println!("3 quarter");
} else if min_part >= 45 && min_part <= 59 {
println!("4 quarter");
}
Решите аналогичную задачу, только определите, в какую треть часа попадает указанное количество минут.