Условная конструкция if..else направляет ход программы по одному из возможных путей в зависимости от условия.
Конструкция if проверяет истинность условия, и если оно истинно, выполняет блок инструкций. Этот оператор имеет следующую сокращенную форму:
if условие
{
инструкции;
}
В качестве условия используется условное выражение, которое возвращает значение типа bool: true или
false. Если условие возвращает true, то выполняются последующие инструкции, которые входят в блок if.
Если условие возвращает false, то инструкции из блока if не выполняются. Блок инструкций заключается в фигурные скобки.
Например:
fn main(){
let number = 5;
if number == 5
{
println!("Условие истинно: number равно 5");
}
}
Здесь конструкция if проверяет истинность условия number == 5. Если оно возвращает true, то выполняется инструкция
println!("Условие истинно: number равно 5");, которая выполняет вывод строки на консоль. И поскольку в данном случае переменная
number действительно равна 5, то будут выполняться инструкции из блока if, и мы увидим на консоли соответствующее сообшение:
Условие истинно: number равно 5
Рассмотрим другой случай:
fn main(){
let number = 5;
if number < 3
{
println!("Условие истинно: number меньше 3");
}
println!("Конец программы");
}
Здесь конструкция if проверяет истинность условия number < 3 (меньше ли значение переменной number числа 3). Поскольку number равно 5,
то это условие ложно и возвращает false, соответственно инструкции из блока if не будут выполняться.
Также мы можем использовать полную форму конструкции if, которая включает оператор else:
if условие
{
инструкции;
}
else
{
инструкции;
}
После оператора else мы можем определить набор инструкций, которые выполняются, если условие после оператора if возвращает false. То есть если
условие истинно, выполняются инструкции блока if, а если это выражение ложно, то выполняются инструкции блока else.
fn main(){
let number = 5;
if number > 6
{
println!("Условие истинно: number больше 6");
}
else
{
println!("Условие ложно: number НЕ больше 6");
}
}
В данном случае условие number > 6 ложно, то есть возвращает false, поэтому будет выполняться блок else.
И в итоге на консоль будет выведена строка
Условие ложно: number НЕ больше 6
Однако нередко надо обработать не два возможных альтернативных варианта, а гораздо больше. Например, в случае выше можно насчитать три условия: переменная number может быть больше 6, меньше 6 и равна 6. Для проверки альтернативных условий мы можем вводить выражение else if, после которого указывается альтернативное условие:
fn main(){
let number = 5;
if number > 6
{
println!("number больше 6");
}
else if number < 6
{
println!("number меньше 6");
}
else
{
println!("number равна 6");
}
}
То есть в данном случае мы получаем три ветки развития событий в программе. И поскольку условие в выражении else if number < 6 возвращает
true, то будут выполняться инструкции из блока else if:
number меньше 6
При необходимости можно добавлять и большее количество выражений else if для проверки альтернативных условий:
fn main(){
let number = 5;
if number == 3
{
println!("number равно 3");
}
else if number == 4
{
println!("number равно 4");
}
else if number == 5
{
println!("number равно 5");
}
else
{
println!("значение number не известно");
}
}
Конструкция let-if позволяет получить в переменную результат конструкции if..else:
let переменная = if условие
{
значение, если условие истинно
}
else
{
значение, если условие ложно
};
Например:
fn main(){
let condition = true;
let number = if condition { 4 }
else { 5 };
println!("number = {}", number); // number = 4
}
Здесь если условие, которое представлено переменной condition равно true, то number равно 4. Если condition равно
false, то number будет равно 5. И поскольку здесь condition = true, то number будет равно 4
Чуть более сложный пример:
fn main(){
let a = 5;
let b = 2;
let operation = 2;
let number = if operation == 1 { a + b }
else if operation == 2 { a - b }
else { a * b };
println!("number = {}", number); // number = 3
}
В данном случае если переменная operation равна 1, то number равно результату операции a + b.
Если operation равна 2, то number равно a - b. В остальных случаях number равно a * b.
Поскольку здесь operation = 2, то number = a - b, то есть 5 - 2 = 3.