English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Les instructions conditionnelles dans le langage Rust prennent cette forme :
fn main() { let number = 3; if number < 5 { println!("La condition est true"); } else { println!("La condition est false"); } }
Dans le programme ci-dessus, il y a une instruction conditionnelle if, cette syntaxe est très courante dans de nombreux autres langages, mais il y a aussi quelques différences : d'abord, l'expression conditionnelle 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 is {}", b); }
运行结果:
b 为 1
Rust 中的条件表达式必须是 bool 类型,例如下面的程序是错误的:
fn main() { let number = 3; if number { // 报错,expected `bool`, found integerrustc(E0308) println!("Yes"); } }
虽然 C/C++ 语言中的条件表达式用整数表示,非 0 即真,但这个规则在很多注重代码安全性的语言中是被禁止的。
结合之前章学习的函数体表达式我们加以联想:
if <condition> { block 1 } else { block 2 }
这种语法中的 { block 1 } 和 { block 2 } 可不可以是函数体表达式呢?
答案是肯定的!也就是说,在 Rust 中我们可以使用 if-else 结构实现类似于三元条件运算表达式 (A ? B : C) 的效果:
fn main() { let a = 3; let number = if a > 0 { 1 } else { -1 }; println!("number 为 {}", number); }
运行结果:
number 为 1
注意:两个函数体表达式的类型必须一样!且必须有一个 else 及其后的表达式块。