美文网首页
Rust学习 (六) 分支循环

Rust学习 (六) 分支循环

作者: Gascognya | 来源:发表于2020-09-16 20:02 被阅读0次

    if 表达式

    {
        println!("number was three");
    }
    
    
    if number {
        println!("number was three");
    }
    

    请问上面两者有何区别?

    第一个是我们之前说的代码块。第二个是我们熟知的if语句。
    仔细一看,两者貌似只差别在一个条件判定。真值才会执行。

    实际上,就是如此。if 表达式,说明if也是一种表达式。可以具有返回值。

    let number = if condition {
            5
    };
    

    那么这样的语句是否可以呢?
    答对了一半,这样的逻辑是对的,但是忽略了一点。if条件如果不被执行,那么let number =就会出现错误,rust是一门十分严谨的语言,这样危险的错误是不可以的。为了无论如何,number都可以被赋一个值。我们需要加上else

    let number = if condition {
        5
    } else {
        6
    };
    

    这样是被允许的,这和python中的if else简化形式含义相同

    number = 5 if condition else 6
    

    并且要注意,rust中的if表达式,if和else的返回值类型要相同,不然显而易见也会出现错误。

    loop 表达式

    let mut counter = 0;
    let result = loop {
        counter += 1;
    
        if counter == 10 {
            break counter * 2;
        }
    };
    

    loop表达式是一种无限循环,直到发生错误或者break
    因为是表达式,所以也可以有返回值,其返回值是break语句后的内容。

    while 循环

    while循环

        let mut number = 3;
    
        while number != 0 {
            println!("{}!", number);
            number = number - 1;
        };
    

    在while中是不能用break来返回一些值的,所有while true最好都替换成loop,两者在编译时有本质区别。

    for 循环

        let num_arry = [10, 20, 30, 40, 50];
        for num in num_arry.iter() {
            println!("{}!", num)
        }
    
        for i in 1..5 {
            println!("{}!", i)
        }
    

    for ... in ...这么方便的功能自然是少不了的

    相关文章

      网友评论

          本文标题:Rust学习 (六) 分支循环

          本文链接:https://www.haomeiwen.com/subject/kyxbektx.html