Условная конструкция 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.