English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Условные предложения в языке Rust имеют следующий формат:
fn main() { let number = 3; if number < 5 { println!("Условие true"); } println!("Условие false"); } }
В указанном выше примере есть условное предложение if, эта грамматика очень распространена во многих других языках, но есть и некоторые различия: во-первых, условное выражение number < 5 не требует включения в скобки (обратите внимание, это не запрещено, а не обязательно); но в Rust условное предложение if не существует правила, согласно которому можно не использовать фигурные скобки для одного предложения, и не разрешается использовать одно предложение вместо блока. Несмотря на это, Rust поддерживает традиционную грамматику else-if:
fn main() { let a = 12; let b; if a > 0 { b = 1; } else if a < 0 { b = -1; } else { b = 0; } println!("b равен {}", b); }
Результат выполнения:
b равен 1
Условные выражения в Rust должны быть типа bool, например, следующий пример является неправильным:
fn main() { let number = 3; if number { // ошибка, expected `bool`, found integer rustc(E0308) println!("Yes"); } }
Хотя в языках C/C++ условные выражения представляются целыми числами, 0 или true, этот принцип запрещен во многих языках, которые注重 безопасность кода.
联想之前章节学习的 expressions bodies:
if <condition> { block 1 } else { block 2 }
в такой грамматике: { block 1 } и { block 2 } Можно ли это сделать с выражением bodies?
Ответ положителен! То есть, в Rust мы можем использовать структуру if-else для реализации подобия三元 условному оператору (A ? B : C) эффект:
fn main() { let a = 3; let number = if a > 0 { 1 } else { -1 }; println!("number равен {}", number); }
Результат выполнения:
number равен 1
ВниманиеТипы двух выражений bodies должны быть одинаковыми! И должен быть один else с выражением блока.