学习Rust的第5天:控制流

Control flow, as the name suggests controls the flow of the program, based on a condition.
控制流,顾名思义,根据条件控制程序的流。

If expression If表达式

An if expression is used when you want to execute a block of code if a condition is met.
当您希望在满足条件的情况下执行代码块时,将使用 if 表达式。

Example 例如

fn main(){
  let age: u32 = 17;
  if age > 18{
    println!("You are an adult");
  }
}

This program will check if the age is greater than 18 or not. if yes it will output “You are an adult”.
该程序将检查年龄是否大于18岁。 if 是的,它会输出“你是一个成年人”。

Now what if I want to get an output when the condition is not met?
现在,如果我想在条件不满足时获得输出,该怎么办?

Else expression Else表达式

An else expression is used to run a block of code when a certain condition is not met.
else 表达式用于在不满足特定条件时运行代码块。

fn main(){
  let age: u32 = 17
  if age>18{
    println!("You are an adult");
  }else{
    println!("You are not an adult");
  }
}

This program will check if the age is greater than 18 or not. if yes it will output “You are an adult” else it will output “You are not an adult”.
该程序将检查年龄是否大于18岁。 if 是的,它将输出“你是一个成年人”,否则它将输出“你不是一个成年人”。

Else If Expression Else If表达式

An else if expression can be used to check for multiple conditions. for example :
else if 表达式可用于检查多个条件。例如:

fn main(){
  let number = 92;
  if number % 9 == 0{
    println!("number is divisible by 9");
  } else if number % 5 == 0{
    println!("number is divisible by 5");
  }else if number % 3 == 0{
    println!("number is divisible by 3");
  }else{
    println!("number is not divisible by 9, 5, 3");
  }
}

Loops 环

Loops are used to go over through a block of code till explicitly specified to stop or if a certain condition is met.
循环用于遍历代码块,直到明确指定停止或满足特定条件。

loop keyword  loop 关键字

The loop keyword tells rust to run a block of code till told to stop using the break keyword
loop关键字告诉rust运行一段代码,直到停止使用 break 关键字

fn main() {
    let mut i: u32 = 0;
    let mut j: i32 = 10;
  // labelled infinite loop with break statements
    'counting_down: loop {
        if j >= 0 {
            println!("{}", j);
            j -= 1;
        } else {
            println!("counting down loop complete");
            break 'counting_down;
        }
    }
}

Explanation: 说明:

  • The main function is the entry point of the Rust program.
    main 函数是Rust程序的入口点。
  • j of type i32 (signed 32-bit integer) initialized with the value 10.
    类型 i32 (有符号32位整数)的 j ,初始化为值10。
  • The code enters a labeled infinite loop marked with the label 'counting_down.
    代码进入一个标记为 'counting_down 的带标签的无限循环。
  • Inside the loop, there’s a conditional statement checking if j is greater than or equal to 0.
    在循环内部,有一个条件语句检查 j 是否大于或等于0。
  • If true, it prints the current value of j using println! and decrements j by 1.
    如果为true,则使用 println! 打印 j 的当前值,并将 j 递减1。
  • If false (when j is less than 0), it prints a message and breaks out of the loop labeled 'counting_down.
    如果为false(当 j 小于0时),它将打印一条消息并跳出标记为 'counting_down 的循环。
  • The loop continues indefinitely until the break 'counting_down; statement is executed.
    循环将无限期地继续,直到执行 break 'counting_down; 语句。
  • The label 'counting_down is used to specify which loop to break out of, especially when dealing with nested loops.
    标签 'counting_down 用于指定要中断哪个循环,特别是在处理嵌套循环时。

While loops While循环

while loop repeatedly executes a block of code as long as a specified condition is true.
只要指定的条件为真, while 循环就会重复执行代码块。

Example: 范例:

fn main(){
  let mut num: u8 = 4;
  while num!=0 {
    println!("{}",num);
    num-=1;
  }
}

Explanation: 说明:

  • A mutable variable num is declared and initialized with the value 4. It has the type u8 (unsigned 8-bit integer).
    声明了一个可变变量 num ,并使用值4进行初始化。它的类型为 u8 (无符号8位整数)。
  • The code enters a while loop with the condition num != 0.
    代码进入一个带有条件 num != 0 的 while 循环。
  • Inside the loop, it prints the current value of num using println!.
    在循环内部,它使用 println! 打印 num 的当前值。
  • It then decrements the value of num by 1 with the num -= 1; statement.
    然后使用 num -= 1; 语句将 num 的值减1。
  • The loop continues as long as the condition num != 0 is true.
    只要条件 num != 0 为真,循环就会继续。
  • The program prints the values of num in descending order from its initial value (4) until it becomes 0.
    程序按从初始值(4)到0的降序打印 num 的值。
  • Once num becomes 0, the loop exits, and the program continues to any subsequent code outside the loop.
    一旦 num 变为0,循环退出,程序继续执行循环外的任何后续代码。

For Loops for循环

for loop iterates over a range, collection, or iterator, executing a block of code for each iteration.
for 循环遍历范围、集合或迭代器,每次迭代执行一个代码块。

Examples: 示例如下:

fn main(){
  //for loops in arrays
  let array: [u8; 10] = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
  println!("For loop to access array");
    for item in array {
        println!("{}", item);
    }
  //for loops in ranges
  println!("For loops in range ");
    for number in 0..=5 {
        println!("{number}");
    }
  println!("For loops in range (reversed)");
    for number in (0..=5).rev() {
        println!("{number}");
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/550727.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何试用 Ollama 运行本地模型 Mac M2

首先下载 Ollama https://github.com/ollama/ollama/tree/main安装完成之后,启动 ollma 对应的模型,这里用的是 qwen:7b ollama run qwen:7b命令与模型直接交互 我的机器配置是M2 Pro/ 32G,运行 7b 模型毫无压力,而且推理时是用…

C语言案例——输出以下图案(两个对称的星型三角形)

目录 图片代码 图片 代码 #include<stdio.h> int main() {int i,j,k;//先输出上半部图案for(i0;i<3;i){for(j0;j<2-i;j)printf(" ");for(k0;k<2*i;k)printf("*");printf("\n");}//再输出下半部分图案for(i0;i<2;i){for(j0;j&…

《R语言与农业数据统计分析及建模》学习——R基础包的函数

1、R的基础包 基础包是R语言的核心组成部分&#xff0c;构建了R语言的基本功能框架。是R语言默认的安装包&#xff0c;不需要额外安装&#xff0c;使用时无需加载。 2、常用函数及其功能 &#xff08;1&#xff09;数据处理函数&#xff1a;unique()、sort()、subset() # 获…

LRTimelapse for Mac:专业延时摄影视频制作利器

LRTimelapse for Mac是一款专为Mac用户设计的延时摄影视频制作软件&#xff0c;它以其出色的性能和丰富的功能&#xff0c;成为摄影爱好者和专业摄影师的得力助手。 LRTimelapse for Mac v6.5.4中文激活版下载 这款软件提供了直观易用的界面&#xff0c;用户可以轻松上手&#…

OpenHarmony、HarmonyOS和Harmony NEXT 《我们不一样》

1. OpenHarmony 定义与地位&#xff1a;OpenHarmony是鸿蒙系统的底层内核系统&#xff0c;集成了Linux内核和LiteOS&#xff0c;为各种设备提供统一的操作系统解决方案。 开源与商用&#xff1a;OpenHarmony是一个开源项目&#xff0c;允许开发者自由访问和使用其源代码&#…

# Nacos 服务发现-Spring Cloud Alibaba 综合架构实战(五) -实现 gateway 网关。

Nacos 服务发现-Spring Cloud Alibaba 综合架构实战&#xff08;五&#xff09; -实现 gateway 网关。 1、什么是网关&#xff1f; 原来的单体架构&#xff0c;所有的服务都是本地的&#xff0c;UI 可以直接调用&#xff0c;现在按功能拆分成独立的服务&#xff0c;跑在独立的…

Kafka、RabbitMQ、Pulsar、RocketMQ基本原理和选型

Kafka、RabbitMQ、Pulsar、RocketMQ基本原理和选型 1. 消息队列1.1 消息队列使用场景1.2. 消息队列模式1.2.1 点对点模式&#xff0c;不可重复消费1.2.2 发布/订阅模式 2. 选型参考2.1. Kafka2.1.1 基本术语2.1.2. 系统框架2.1.3. Consumer Group2.1.4. 存储结构2.1.5. Rebalan…

【深度学习】执行wandb sync同步命令报错wandb: Network error (SSLError), entering retry loop

执行wandb sync同步命令报错wandb: Network error (SSLError), entering retry loop 在代码中设置wandb offline的命令 os.environ["WANDB_API_KEY"] "API keys" os.environ["WANDB_MODE"] "offline"日志文件生成后&#xff0c;使…

十大排序——7.希尔排序

下面我们来看一下希尔排序 目录 1.介绍 2.代码实现 3.总结与思考 1.介绍 希尔排序是插入排序的一种优化&#xff0c;可以理解为是一种分组的插入排序。 希尔排序的要点&#xff1a; 简单来说&#xff0c;就是分组实现插入&#xff0c;每组元素的间隙称为gap&#xff0c;…

【Git】常用命令速查

目录 一、创建版本 二、修改和提交 三、查看提交历史 四、撤销 五、分支与标签 六、合并与衍合 七、远程操作 一、创建版本 命令简要说明注意事项git clone <url>克隆远程版本库 二、修改和提交 命令简要说明注意事项 三、查看提交历史 命令简要说明注意事项 …

论文解读:(MoCo)Momentum Contrast for Unsupervised Visual Representation Learning

文章汇总 参数的更新&#xff0c;指encoder q的参数&#xff0c;为encoder k&#xff0c;sampling&#xff0c;monentum encoder 的参数。 值得注意的是对于(b)、(c)这里反向传播只更新&#xff0c;的更新只依赖于。 对比学习如同查字典 考虑一个编码查询和一组编码样本是字典…

负载均衡集群——LVS

目录 1.LVS简介 2.LVS体系结构 3.LVS相关术语 4. LVS工作模式 5. LVS调度算法 6.LVS集群介绍 6.1 LVS-DR模式 6.2 LVS – NAT 模式 6.3 LVS – TUN 模式 7.LVS 集群构建 7.1 LVS/NAT 模式配置 实验操作步骤 步骤 1 Nginx1 和 Nginx2 配置 步骤 2 安装和配置 LVS …

Visual Studio 2019 社区版下载

一、网址 https://learn.microsoft.com/zh-cn/visualstudio/releases/2019/release-notes#start-window 二、选择这个即可

ISP图像处理pipeline简介1

ISP 是什么&#xff1f; ISP (Image Signal Processor)&#xff0c;图像信号处理器&#xff0c;是用于摄影和视频处理的一种专用芯片。它是用来干什么的呢&#xff1f;简单说就是用来将图像传感器&#xff08;CCD, CMOS&#xff09;信号转化成可视的信号的功能&#xff0c;这里…

回归损失函数

目录 1 MAE 2 MSE 3 MAPE 4 Quantile Loss分位数损失 回归损失函数也可以做为评价指标使用&#xff0c;但是有没有想过数据分布与损失函数之间的关系呢&#xff01; 使用特定损失函数的前提是我们对标签的分布进行了某种假设&#xff0c;在这种假设的前提下通过极大似然法推…

社交媒体数据恢复:YY语音

YY语音数据恢复指南 在我们的日常生活中&#xff0c;数据丢失是一种常见的现象。有时候&#xff0c;我们可能会不小心删除了重要的文件&#xff0c;或者因为硬件故障而导致数据丢失。在这种情况下&#xff0c;数据恢复软件可以帮助我们找回丢失的数据。本文将重点介绍如何使用Y…

一招将vscode自动补全的双引号改为单引号

打开设置&#xff0c;搜索quote&#xff0c;在结果的HTML选项下找到自动完成&#xff0c;设置默认引号类型即可。 vscode版本&#xff1a;1.88.1&#xff0c; vscode更新日期&#xff1a;2024-4-10

STM32-ADC(独立模式、双重模式)

ADC简介 18个通道&#xff1a;外部信号源就是16个GPIO回。在引脚上直接接模拟信号就行了&#xff0c;不需要侄何额外的电路。引脚就直接能测电压。2个内部信号源是内部温度传感器和内部参考电压。 逐次逼近型ADC: 它是一个独立的8位逐次逼近型ADC芯片&#xff0c;这个ADC0809是…

net core 程序运行报错,需要kb2533623补丁

报错大概如下&#xff1a; Failed to load the dll from xxxx 0x80070057 The library hostfxr.dll was found, but loading it from .xxxx\hostfxr.dll failed 目前微软官方已经停止这个补丁下载了&#xff0c;找个了多个网址不是带病毒就是带推广了&#xff0c;下面这个目前…

I2C通信的详细讲解

物理接口&#xff1a; SCL SDA &#xff08;1&#xff09;SCL&#xff08;serial clock&#xff09;:时钟线&#xff0c;传输CLK信号&#xff0c;一般是I2C主设备向从设备提供时钟的通道。 &#xff08;2&#xff09;SDA&#xff08;serial data&#xff09;&#xff1a;数据…