Rust 教程
1. Rust 教程 2. Rust 环境搭建 3. Cargo 教程 4. Rust 输出到命令行 5. Rust 基础语法 6. Rust 数据类型 7. Rust 注释 8. Rust 函数 9. Rust 条件语句 10. Rust 循环 11. Rust 所有权 12. Rust Slice(切片)类型 13. Rust 结构体 14. Rust 枚举类 15. Rust 组织管理 16. Rust 错误处理 17. Rust 泛型与特性 18. Rust 生命周期 19. Rust 文件与 IO 20. Rust 集合与字符串 21. Rust 面向对象 22. Rust 并发编程

Rust 条件语句

Rust 条件语句

在 Rust 语言中的条件语句使这种格式的:

实例

fn main() {
    let number = 3;
    if number < 5 {
        println!("条件为 true");
    } else {
        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 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 及其后的表达式块。