Files
LearnRustEasy/src/chapter_3/chapter_3_5.md
Davirain 7ff4ad4d46 update
2023-05-17 17:34:42 +08:00

2.9 KiB
Raw Blame History

3.5 控制流

Rust中的控制流结构主要包括

  • if条件判断
  • loop循环
  • while循环
  • for .. in 循环。

3.5.1. if条件判断

  • if执行条件判断示例如下
fn main() {
    let a = 2u32;

    if a > 5u32 {
        println!("a > 5");
    } else {
        println!("a <= 5");
    }
}
  • if - else if处理多重条件示例如下
fn main() {
    let a = 3u32;

    if a > 5u32 {
        println!("a > 5");
    } else if a > 4u32 {
        println!("a > 4");
    } else if a > 3u32 {
        println!("a > 3");
    } else if a > 2u32 {
        println!("a > 2");
    } else if a > 1u32 {
        println!("a > 1");
    } else {
        println!("a = 1");
    }
}
  • 在let语句中使用if

if是一个表达式所以可以在let右侧使用如下

fn main() {
    let a = 3u32;

    let a_bigger_than_two: bool = if a > 2u32 {
        true
    } else {
        false
    };

    if a_bigger_than_two {
        println!("a > 2");
    } else {
        println!("a <= 2");
    }
}

3.5.2. loop循环

  • loop重复执行代码
fn main() {
    // 一直循环打印 again
    loop {
        println!("again!");
    }
}
  • 使用break终止循环
fn main() {
    let mut counter = 0;

    loop {
        println!("counter = {:?}", counter);
        counter += 1;

        if counter == 10 {
            break;  // 将终止循环
        }
    }
}

上面的代码将打印10次遇到break后终止循环。另外break也可以返回值如下

fn main() {
    let mut counter = 0;

    let result = loop {
        counter += 1;

        if counter == 10 {
            break counter * 2;
        }
    };

    println!("The result is {result}");
}
  • 使用continue可以直接跳到下一轮循环
fn main() {
    let mut x = 0;
    // 此循环将只打印10以内的奇数
    loop {
        x += 1;
        if x == 10 {
            break;
        }
        if x % 2 == 0 {
            continue;      //将直接跳到下一轮循环
        }
        println!("{}", x);
    }
}

3.5.3. while条件循环

  • while条件循环执行代码当条件不满足后结束循环如下
fn main() {
    let mut cnt = 0u32;
    while cnt < 10 {
        println!("cnt = {:?}", cnt);
        cnt += 1;
    }
}
  • 在while循环中也可以使用break和continue如下
fn main() {
    let mut x = 0;

    while x < 10 {
        x += 1;
        println!("{}", x);
        if x % 2 == 0 {
            continue; // 跳到下一轮循环
        }
        if x > 8 {
            break; // 提前结束
        }
    }
}

3.5.4. for .. in 循环

for循环用来对一个集合的每个元素执行一些代码使用方式如下

fn main() {
    let a = [10, 20, 30, 40, 50];

    for item in a {
        println!("the value is: {:?}", item);
    }
}