学习Rust的第5天:控制流

news2024/11/23 3:57:04

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}");
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为云CodeArts IDE For Python 快速使用指南

CodeArts IDE 带有 Python 扩展,为 Python 语言提供了广泛的支持。Python 扩展可以利用 CodeArts IDE 的代码补全、验证、调试和单元测试等特性,与多种 Python 解释器协同工作,轻松切换包括虚拟环境和 conda 环境的 Python 环境。本文简要概述…

Java基础_22线程死锁,object类下面线程方法,生产者消费者

周二的回顾 1.线程的概念是进程(应用程序软件)最小的基本单位 2.在Java中代码咋写线程1.继承Thread类2.实现Runnable接口3.实现Callable接口 3.Thread相关的方法4.同步锁目的: 当多个线程操作同一个资源的时候,会发生数据不安全性!!&#x…

FAOBlue---脂肪酸β-氧化(FAO)活性荧光定量试剂

Funakoshi品牌的FAOBlue是一款可通过荧光成像将活细胞内脂肪酸β-氧化(FAO)活性可视化的试剂。只需将产品添加到培养基中,即可通过荧光观察定量脂肪酸β-氧化活性。 FAO(脂肪酸β-氧化,Fatty acid beta-oxidation&…

LeetCode——965. 单值二叉树

题目- 力扣(LeetCode) 如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。 只有给定的树是单值二叉树时,才返回 true;否则返回 false。 示例 1: 输入:[1,1,1,1,1,null,1] 输出&a…

Java工程师常见面试题:Java基础(一)

1、JDK 和 JRE 有什么区别? JDK是Java开发工具包,它包含了JRE和开发工具(如javac编译器和java程序运行工具等),主要用于Java程序的开发。而JRE是Java运行环境,它只包含了运行Java程序所必须的环境&#xf…

大创项目推荐 深度学习YOLOv5车辆颜色识别检测 - python opencv

文章目录 1 前言2 实现效果3 CNN卷积神经网络4 Yolov56 数据集处理及模型训练5 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习YOLOv5车辆颜色识别检测 ** 该项目较为新颖,适合作为竞赛课题方向&#xff0…

imx6ull构建根文件系统

在nfs目录下创建 rootfs 复制正点原子给的BusyBox解压。 进入MakeFile,加入如下 中文字符支持 打开文件 busybox-1.29.0/libbb/printable_string.c, 打开文件 busybox-1.29.0/libbb/unicode.c make menuconfig 不要选中 编译 完成后如下 这里我解压文…

【ARM】如何通过ARMDS的Map文件查看堆栈调用情况

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 通过ARMDS生成的Map文件,查看工程的堆栈使用情况。 2、 问题场景 在对于工程进行调试和测试的时候,工程师通常需要了解目前工程的堆栈使用情况,是否有函数或者变量占用了过多的堆…

基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于HMM隐马尔可夫模型的金融数据预测算法.程序实现HMM模型的训练,使用训练后的模型进行预测。 2.测试软件版本以及运行结果展示 MATLAB2022A版本运…

新手小白花几个月勇敢裸辞转行网络安全

我是 25 岁转行学网络安全的。说实在,转行就是奔着挣钱去的。希望我的经历可以给想转行的朋友带来一点启发和借鉴。 先简单介绍下个人背景,三流大学毕业,物流专业,学习能力一般,没啥特别技能,反正就很普通…

智慧园区解决方案一站式资料大全:标准规范顶层设计指南、供应商整体解决方案及售前PPT、标准白皮书、全国前50智慧园区集成商方案等全套600份,一次性打包下载

关键词:智慧园区解决方案,智慧园区整体解决方案,智慧园区建设总体方案设计,智慧园区综合管理系统,智慧产业园区解决方案,智慧产业园区规划方案,智慧园区建设规划方案,智慧工业园区建…

java正则表达式教程

什么是正则表达式: 正则表达式是一种用来描述字符串模式的语法。在 Java 中,正则表达式通常是一个字符串,它由普通字符(例如字母、数字、标点符号等)和特殊字符(称为元字符)组成。这些特殊字符可…

单链表经典算法题分析

目录 一、链表的中间节点 1.1 题目 1.2 题解 1.3 收获 二、移除链表元素 2.1 题目 2.2 题解 2.3 收获 2.4递归详解 三、反转链表 3.1 题目 3.2 题解 3.3 解释 四、合并两个有序列表 4.1 题目 4.2 题解 4.3 递归详解 声明:本文所有题目均摘自leetco…

康耐视visionpro-CogCreateLinePerpendicularTool操作操作工具详细说明

CogCreateLinePerpendicularTool]功能说明: 创建点到线的垂线 CogCreateLinePerpendicularTool操作说明: ①.打开工具栏,双击或点击扇标拖拽添加CogCreateLinePerpendicularTool ②.添加输入源:右键“链接到”或以连线拖 拽的方式…

如何使用上位机监控和控制设备

本文将介绍如何使用上位机来监控和控制设备,并探讨其中的关键步骤和注意事项。 1. 设备接口与通信设置 在使用上位机监控和控制设备之前,首先需要建立设备与上位机之间的通信连接。这通常涉及选择合适的通信接口和协议,例如串口、以太网、M…

OpenHarmony实战开发-如何使用ArkUIstack 组件实现多层级轮播图。

介绍 本示例介绍使用ArkUIstack 组件实现多层级轮播图。该场景多用于购物、资讯类应用。 效果图预览 使用说明 1.加载完成后显示轮播图可以左右滑动。 实现思路 1.通过stack和offsetx实现多层级堆叠。 Stack() {LazyForEach(this.swiperDataSource, (item: SwiperData, i…

算法思想总结:链表

一、链表的常见技巧总结 二、两数相加 . - 力扣(LeetCode) class Solution { public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {//利用t来存进位信息int t0;ListNode*newheadnew ListNode(0);//创建一个哨兵节点,方便尾插List…

【从零开始手搓12306项目】十二、项目初始化配置

idea的编码环境全都改成UTF-8 自动导入依赖 自动编译

【C语言】每日一题,快速提升(3)!

🔥博客主页🔥:【 坊钰_CSDN博客 】 欢迎各位点赞👍评论✍收藏⭐ 题目:杨辉三角 在屏幕上打印杨辉三角。 1 1 1 1 2 1 1 3 3 1 ……......... 解答: 按照题设的场景,能发现数字规律为&#xff1…

政安晨:【深度学习神经网络基础】(十)—— 反向传播网络中计算输出节点增量与计算剩余节点增量

目录 简述 二次误差函数 交叉熵误差函数 计算剩余节点增量 政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: 政安晨的机器学习笔记 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正&#xf…