• If

    If

    if.md


    commit ccb1d87d6faa9ff528d22b96595a0e2cbb16c0f2

    Rust 的 if 并不是特别复杂,不过你会发现它更像动态类型语言而不是更传统的系统语言。所以让我来说说它,以便你能把握这些细节。

    if 语句是分支这个更加宽泛的概念的一个特定形式。它的名字来源于树的树枝:一个选择点,根据选择的不同,将会使用不同的路径。

    if 语句中,有一个引向两条路径的选择:

    1. let x = 5;
    2. if x == 5 {
    3. println!("x is five!");
    4. }

    如果在什么别的地方更改了x的值,这一行将不会输出。更具体一点,如果if后面的表达式的值为true,这个代码块将被执行。为false则不被执行。

    如果你想当值为false时执行些什么,使用else

    1. let x = 5;
    2. if x == 5 {
    3. println!("x is five!");
    4. } else {
    5. println!("x is not five :(");
    6. }

    如果不止一种情况,使用else if

    1. let x = 5;
    2. if x == 5 {
    3. println!("x is five!");
    4. } else if x == 6 {
    5. println!("x is six!");
    6. } else {
    7. println!("x is not five or six :(");
    8. }

    这些都是非常标准的情况。然而你也可以这么写:

    1. let x = 5;
    2. let y = if x == 5 {
    3. 10
    4. } else {
    5. 15
    6. }; // y: i32

    你可以(或许也应该)这么写:

    1. let x = 5;
    2. let y = if x == 5 { 10 } else { 15 }; // y: i32

    这代码可以被执行是因为if是一个表达式。表达式的值是任何被选择的分支的最后一个表达式的值。一个没有elseif总是返回()作为返回值。