美文网首页Rust
3.5 控制流

3.5 控制流

作者: 剑有偏锋 | 来源:发表于2019-11-14 16:27 被阅读0次

根据条件是否为真来决定是否执行某些代码,以及根据条件是否为真来重复运行一段代码是大部分编程语言的基本组成部分。Rust 代码中最常见的用来控制执行流的结构是 if 表达式和循环。

if 表达式

简单if - else

fn main() {
    let number = 3;
    if number < 5 {
        println!("condition was true");
    } else {
        println!("condition was false");
    }
}
 cargo run
   Compiling branches v0.1.0 (/home/li/projects/branches)
    Finished dev [unoptimized + debuginfo] target(s) in 0.63s
     Running `target/debug/branches`
condition was true

使用else if处理多重条件

fn main() {
    let number = 6;

    if number % 4 == 0 {
        println!("number is divisible by 4");
    } else if number % 3 == 0 {
        println!("number is divisible by 3");
    } else if number % 2 == 0 {
        println!("number is divisible by 2");
    } else {
        println!("number is not divisible by 4, 3, or 2");
    }
}

在let语句使用if

fn main() {
    let condition = true;
    let number = if condition {
        5
    } else {
        6
    };

    println!("The value of number is: {}", number);
}

输出

cargo run
   Compiling branches v0.1.0 (/home/li/projects/branches)
    Finished dev [unoptimized + debuginfo] target(s) in 0.38s
     Running `target/debug/branches`
The value of number is: 5

注意:代码块的值是其最后一个表达式的值,而数字本身就是一个表达式。这意味着 if 的每个分支的可能的返回值都必须是相同类型;如果它们的类型不匹配,则报错(错误示例如下: error[E0308]: if and else have incompatible types )

  let number = if condition {
        5
    } else {
        "six"
    };

使用循环重复执行

loop

无限循环

fn main() {
    loop {
        println!("again!");
    }
}

带break跳出循环的loop,且使用break传递返回值

fn main() {

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

    assert_eq!(result, 20);
}

输出

cargo run
   Compiling branches v0.1.0 (/home/li/projects/branches)
    Finished dev [unoptimized + debuginfo] target(s) in 0.66s
     Running `target/debug/branches`

while

fn main() {

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

    println!("LIFT OFF!!!");   
}

输出

cargo run
   Compiling branches v0.1.0 (/home/li/projects/branches)
    Finished dev [unoptimized + debuginfo] target(s) in 0.40s
     Running `target/debug/branches`
LIFT OFF!!!

for

fn main() {
    let a = [10, 20, 30, 40 ,50];
    for element in a.iter() {
        println!("the value is: {}", element);
    }
}

输出

cargo run
   Compiling branches v0.1.0 (/home/li/projects/branches)
    Finished dev [unoptimized + debuginfo] target(s) in 0.44s
     Running `target/debug/branches`
the value is: 10
the value is: 20
the value is: 30
the value is: 40
the value is: 50

for 循环的安全性(对容器)和简洁性使得它成为 Rust 中使用最多的循环结构。即使是在想要循环执行代码特定次数时

使用for range

fn main() {
    for number in (1..4).rev() { //rev是逆序排列
        println!("{}!", number);
    }
    println!("LIFT OFF!");
}

输出

 cargo run
   Compiling branches v0.1.0 (/home/li/projects/branches)
    Finished dev [unoptimized + debuginfo] target(s) in 0.38s
     Running `target/debug/branches`
3!
2!
1!
LIFT OFF!

相关文章

  • 3.5 控制流

    根据条件是否为真来决定是否执行某些代码,以及根据条件是否为真来重复运行一段代码是大部分编程语言的基本组成部分。Ru...

  • 【Solidity学习笔记】控制结构

    3.5 控制结构

  • 3.5 总线控制

    返回目录 点击3.4 总线结构查阅上一节内容 3.5.1 总线判优控制 主设备(模块):对总线有控制功能从设备(模...

  • 9.控制流(theControlFlow)

    控制流 kotlin_控制流 swift控制流

  • Python | 常用的控制流语句

    一、控制流语句介绍 了解什么是控制流语句以及Python常用的两种控制流语句。 1.控制流语句 控制流语句即用来实...

  • 控制流

    上一篇:基础运算当前篇:控制流下一篇:集合类型 从大体来讲控制流分为条件语句和循环语句,而这两种语句差不多就是程序...

  • 控制流

    0. 分支结构 概念:指程序的 流程走向,比较像一棵树 分散 的 树枝 分类单分支判断1. 一般形式 age ...

  • 控制流

    控制流 [TOC] Swift提供了多种流程控制结构,包括可以多次执行任务的while循环,基于特定条件选择执行不...

  • 控制流

    语句与程序块 在表达式之后加上一个分号(;),它们就变成了语句。例如: 在C语言中,分号是语句的结束符。用一对花括...

  • 控制流

    foreach bind 1.示例 2.不带元素的绑定 if bind 1.绑定示例 if 绑定是很重要的,它能让...

网友评论

    本文标题:3.5 控制流

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