Конструкция if-else и значения true/false в Rust
Пусть у нас есть какая-то логическая переменная,
которая может принимать значения true
или false. Условие не обязано содержать
сравнение чисел: туда можно поставить саму
переменную. Язык смотрит на это значение
и выбирает ветку.
let test = true;
Давайте напишем if, проверяющий нашу
переменную на значение true. Знака
строгого сравнения по типу в Rust нет:
для bool достаточно ==, а еще
короче поставить саму переменную в условие.
Так записывают проверки флагов: сначала готовят переменную, потом передают ее в конструкцию ветвления без лишних знаков сравнения.
Используем флаг доступа:
let open = true;
if open {
println!("enter");
} else {
println!("wait");
}
При значении нет ветка меняется:
let open = false;
if open {
println!("enter");
} else {
println!("wait");
}
Проверку на true пишут очень часто.
Сравнение с true и сама переменная
в условии дают один ответ:
let test = true;
if test == true {
println!("Y"); // сработает это
} else {
println!("N");
}
Короче поставить в условие саму переменную:
let test = true;
if test {
println!("Y"); // сработает это
} else {
println!("N");
}
В условие ставят только логическое значение. Число или строка на этом месте не собираются.
Знак ! меняет да на нет и нет на да.
Так проверяют, что переменная не равна
true:
let test = true;
if !test {
println!("Y");
} else {
println!("N"); // сработает это
}
Запись test == false дает тот же ответ,
что и !test:
let test = true;
if test == false {
println!("Y");
} else {
println!("N"); // сработает это
}
Составное условие тоже переворачивают. Пусть проверка выглядит так:
let num = 3;
if num > 0 && num < 5 {
println!("Y"); // сработает это
} else {
println!("N");
}
Противоположный ответ получится, если поменять знаки и связку И на Или:
let num = 3;
if num <= 0 || num >= 5 {
println!("Y");
} else {
println!("N"); // сработает это
}
Короче поставить ! перед исходной
проверкой. Скобки держат части вместе:
let num = 3;
if !(num > 0 && num < 5) {
println!("Y");
} else {
println!("N"); // сработает это
}
Дана переменная:
let ready = true;
По значению ready выведите "go"
или "stop".
Даны переменные:
let logged = false;
Выведите "in" при да в logged,
иначе "out".
Скажите, нужен ли знак равенства, если в условии уже стоит переменная с типом да или нет.
Проверьте то, что переменная test
равна true.
Проверьте то, что переменная test
равна false.
Перепишите код, поставив в условие саму переменную:
let test = true;
if test == true {
println!("Y");
} else {
println!("N");
}
Перепишите код через знак !:
let test = true;
if test == false {
println!("Y");
} else {
println!("N");
}
Перепишите код через знак !:
let test = true;
if test != true {
println!("Y");
} else {
println!("N");
}
Перепишите код, поставив в условие саму переменную:
let test = true;
if test != false {
println!("Y");
} else {
println!("N");
}
Дан код:
let num1 = 1;
let num2 = 5;
if num1 >= 0 || num2 <= 10 {
println!("Y");
} else {
println!("N");
}
Знаком ! инвертируйте условие.
Скажите, соберется ли программа, если
в if поставить число 3.