Rust学习总结之if,while,loop,for使用

news2024/12/25 9:04:11

 目录

一:if的使用

二:while的使用

三:loop的使用

四:for的使用


        本文总结的四种语句(if,while,loop,for)除了loop,其他的三个在C语言或者Python中都是常见并且常用的语句,在rust中增加了loop的用法,下面将详细学习一下这四种语句的使用

一:if的使用

fn main() {
    let num = 1;
    if num > 10{
        println!("number is {} large 10",num);
    }else {
        println!("number is {} less 10",num);
    }
}

运行结果:

number is 1 less 10

         上面是if条件判断语句的基本用法,if后边不需要用小括号(但是允许使用小括号,编译的时候会有告警提示),另外大括号{}是必须要的,C语言中单语句可以省略大括号,但是rust中不允许。当然在rust中if也支持if-else语法,另外if后面也可以有多个条件表达式

fn main() {
    let num = 5;

    if num > 10{
        println!("number is {} large 10",num);
    }else if num < 3 && num > 4{
        println!("number is {} less 10",num);
    }else {
        println!("number is {}",num);
    }
}

运行结果:

number is 5

另外对于简单的if判断,rust也支持一行写法,类似于python中的三元条件运算表达式

fn main() {
    let age = 18;
    let height = if age > 13 {175} else {150};
    println!("the height is {}",height);
}

运行结果:

the height is 175

 最后需要注意的是在rust中条件表达式必须是bool类型,不允许像C语言中非0就是真的写法


fn main() {
    let number = 3;
    if number {
        println!("Yes");
    }
}

运行结果:

二:while的使用

下面我们用while写一个从0循环加到100的语句

fn main() {
    let mut sum = 0;
    let mut index = 0;
    while index <= 100{
        sum += index;
        index += 1;
    }
    println!("The sum is: {}", sum);
}

运行结果:

The sum is: 5050

 上面的代码在调试的时候,假如最后一句打印没有的话,在C语言中是绝对没有问题的,但是在rust中会报sum没有使用

 目前rust的学习还不够深入,猜测可能是作用域的问题,待学习到后面再来探讨一下这个现象

当然在while循环过程中,如果想遇到某个条件要跳出while循环,也可以用break

fn main() {
    let mut sum = 0;
    let mut index = 0;
    while index <= 100{
        sum += index;
        index += 1;
        if index == 50{
            break;
        }
    }
    println!("The sum is: {}", sum);
}

运行结果:

The sum is: 1225

三:loop的使用

        loop语句在C语言中是没有的,在rust中引入了loop,给开发者多了一个选择。在C语言中假如我们要写一个循环,无法在开头和结尾判断是否继续进行循环,必须在循环体中间某处控制循环的进行。如果遇到这种情况,我们经常会在一个 while (true) 循环体里实现中途退出循环的操作。在Rust中loop就能很好的解决这个应用场景。当然loop的用法也很灵活

        还是上面的循环加到100例子,这里用loop来实现

fn main() {
    let mut sum = 0;
    let mut index = 0;
    loop{
        sum += index;
        index += 1;
        if index > 100{
            break;
        }
    }
    println!("The sum is: {}", sum);
}

运行结果:

The sum is: 5050

        loop 循环可以通过 break 关键字类似于 return 一样使整个循环退出并给予外部一个返回值。这是一个十分巧妙的设计,因为 loop 这样的循环常被用来当作查找工具使用,如果找到了某个东西当然要将这个结果交出去

fn main() {
    let s = ['f', 't', 'z', 'c', 's', 'd','n'];
    let mut i = 0;
    let location = loop {
        let ch = s[i];
        if ch == 'c' {
            break i;
        }
        i += 1;
    };
    println!(" 'c' 的索引为 {}", location);
}

运行结果:

'c' 的索引为 3

四:for的使用

        for循环可以说是一个万金油的循环结构,在C语言或者Python的开发过程中,for循环我用的非常多,当然while循环也会用,但是for循环相比while循环,一是结构上比较灵活,二是相对来说比while也安全些,特别是对于数组,可迭代结构的遍历非常方便

fn main() {
    let s = ['f', 't', 'z'];
    //遍历数组s,方法一
    for index in 0..s.len(){
        println!("遍历数组:s[{}]:{}",index,s[index]);
    }
    //遍历数组s,方法二
    for element in s.iter(){
        println!("遍历数组s:{}",element);
    }
}

运行结果:

遍历数组:s[0]:f
遍历数组:s[1]:t
遍历数组:s[2]:z
遍历数组s:f
遍历数组s:t
遍历数组s:z

可以看到rust中for循环的语法和Python非常像,看到了就有一种熟悉感。

好了!!!以上就是对rust条件判断和循环语句的学习总结,有不对的地方也欢迎批评指正,点个赞更好,嘻嘻嘻!!!

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

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

相关文章

DDD系列 - 第1讲 DDD相关概念入门

目录一、引言二、 统一语言Ubiquitous Language三、 三个阶段&#xff08;战略、战术、实现&#xff09;阶段1&#xff1a;战略设计阶段阶段2&#xff1a;战术设计阶段阶段3&#xff1a;技术实现阶段四、限界上下文Bounded Context五、上下文映射Context Map防腐层Anti-Corrupt…

深度学习代码怎么读-小白阶段性思路

深度学习代码怎么读-小白阶段性思路目前思路学习资料读代码工具-chatgpt目前思路 努力上路的小白一枚&#xff0c;麻烦路过的大佬指导一二&#xff0c;同时希望能和大家交流学习~ 和学长、实习老师们交流后的目前思路&#xff1a; 先找到自己研究领域的顶级期刊&#xff0c;…

21 Nacos客户端本地缓存及故障转移

Nacos客户端本地缓存及故障转移 在Nacos本地缓存的时候有的时候必然会出现一些故障&#xff0c;这些故障就需要进行处理&#xff0c;涉及到的核心类为ServiceInfoHolder和FailoverReactor。 本地缓存有两方面&#xff0c;第一方面是从注册中心获得实例信息会缓存在内存当中&a…

AGV机器人出圈:助力产线物流自动化

随着开年档电影《流浪地球2》的热映&#xff0c;里面的四足仿生机器人机械狗“笨笨”、可穿戴的外骨骼机器人等“黑科技”&#xff0c;都让人对机器人的魅力刮目相看&#xff0c;机器人成功“出圈”了&#xff0c;随着智能技术的发展与进步&#xff0c;我们常见的机器人种类越来…

Linux命令之sed

sed&#xff0c;Stream Editor&#xff08;字符流编辑器&#xff09;的缩写&#xff0c;简称流编辑器&#xff0c;是操作、过滤、转换文本内容的工具。 常用功能包括结合正则表达式对文件实现快速的增删改查。 工作原理 sed有2个空间来缓存数据&#xff0c;paattern space&am…

Qt交叉编译环境搭建

环境及版本&#xff1a;Deepin 20.3 Qt 5.12.9 arm编译工具 gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz 1.下载Qt源码&#xff1a;qt-everywhere-src-5.12.9.tar.xz&#xff0c;并解压 2.下载arm编译工具&#xff1a; gcc-linaro-7.5.0-2019.12-x86_64_arm…

央企集团是怎么设置信息化、数字化部门的?

在数字经济大潮中&#xff0c;数字化转型已不是企业的“选修课”&#xff0c;而是关乎企业生存和长远发展的“必修课”。在企业数字化转型中&#xff0c;国有企业特别是中央企业普遍将数字化转型战略作为“十四五”时期业务规划的重要内容之一&#xff0c;数字化能力也成为衡量…

代码随想录【Day31】| 455. 分发饼干、376. 摆动序列、53. 最大子数组和

455. 分发饼干 题目链接 题目描述&#xff1a; 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的饼干的最小尺寸&#xff…

用Docker搭建yolov5开发环境

拉取镜像 sudo docker pull pytorch/pytorch:latest 创建容器 sudo docker run -it -d --gpus "device0" pytorch/pytorch bash 查看所有容器 sudo docker ps -a 查看运行中的容器 sudo docker ps 进入容器 docker start -i 容器ID 将依赖包全都导入到requiremen…

如何将图数据库应用于电影智能推荐

导读 电影&#xff0c;是一种结合视觉与听觉的现代艺术。如今&#xff0c;电影已不单是人们娱乐消遣的生活方式&#xff0c;也逐渐成为国家文化软实力的重要标志之一。据有关数据统计&#xff0c;2021年中国影视行业市场规模达2349亿元&#xff0c;同比增长23.2%&#xff0c;预…

java--IO

IO1.文件流2.常用的文件操作&#xff08;1&#xff09;根据路径构建一个File对象&#xff08;2&#xff09;根据父目录文件子路径构建&#xff08;3&#xff09;根据父目录子路径构建&#xff08;4&#xff09;获取文件相关信息&#xff08;5&#xff09;目录的操作和文件的删除…

计算机图形学07:有效边表法的多边形扫描转换

作者&#xff1a;非妃是公主 专栏&#xff1a;《计算机图形学》 博客地址&#xff1a;https://blog.csdn.net/myf_666 个性签&#xff1a;顺境不惰&#xff0c;逆境不馁&#xff0c;以心制境&#xff0c;万事可成。——曾国藩 文章目录专栏推荐专栏系列文章序一、算法原理二、…

Git 企业级分支提交流程

Git 企业级分支提交流程 首先在本地分支hfdev上进行开发&#xff0c;开发后要经过测试。 如果测试通过了&#xff0c;那么久可以合并到本地分支develop&#xff0c;合并之后hfdev和development应该完全一样。 git add 文件 git commit -m ‘注释’ git checkout develop //切换…

svn使用

一、SVN概述 1.1为什么需要SVN版本控制软件 1.2解决之道 SCM&#xff1a;软件配置管理 所谓的软件配置管理实际就是对软件源代码进行控制与管理 CVS&#xff1a;元老级产品 VSS&#xff1a;入门级产品 ClearCase&#xff1a;IBM公司提供技术支持&#xff0c;中坚级产品 1.…

【无标题】开发板设置系统时间

开发板设置系统时间环境查看系统时间查看硬件时间设置系统时间设置RTC时间时钟包括硬件时钟和系统时钟&#xff0c;系统时钟就是linux系统显示的时间&#xff0c;用命令 date可以显示当前系统时间&#xff1b;硬件时钟就是硬件自身的时间了。它们两者没有关系的&#xff0c;但是…

如何利用Power Virtual Agents机器人远程打开电脑中的应用

今天我们来介绍如何利用Power Virtual Agents来远程控制电脑。我们的设计思路是在聊天机器人里输入触发短语后打开自己电脑中的题库软件。 首先&#xff0c;进入已经创建好的聊天机器人编辑界面。 新建一个主题后&#xff0c;在“新建主题”中添加“触发短语”。 添加节点后&a…

C++代码优化(3):条款13~17

"野性袒露着灵魂纯粹"条款13:以对象管理资源(1)什么是资源&#xff1f;C中最常使用的资源就是动态内存分配&#xff0c;在系统编程层面上&#xff0c;文件描述符(fd)、互斥锁(mutex)、套接字网络socket……不管是哪一种资源&#xff0c;重要的是&#xff0c;你不使用…

CEC2014:鱼鹰优化算法(Osprey optimization algorithm,OOA)求解CEC2014(提供MATLAB代码

一、鱼鹰优化算法简介 鱼鹰优化算法&#xff08;Osprey optimization algorithm&#xff0c;OOA&#xff09;由Mohammad Dehghani 和 Pavel Trojovsk于2023年提出&#xff0c;其模拟鱼鹰的捕食行为。 鱼鹰是鹰形目、鹗科、鹗属的仅有的一种中型猛禽。雌雄相似。体长51-64厘米…

Spark 任务调度机制

1.Spark任务提交流程 Spark YARN-Cluster模式下的任务提交流程&#xff0c;如下图所示&#xff1a; 图YARN-Cluster任务提交流程 下面的时序图清晰地说明了一个Spark应用程序从提交到运行的完整流程&#xff1a; 图Spark任务提交时序图 提交一个Spark应用程序&#xff0c;首…

mysql数据库之存储过程

一、存储过程简介。 存储过程是事先经过编译并存储在数据库中的一段sql语句的集合&#xff0c;调用存储过程可以简化应用开发人员的很多工作&#xff0c;减少数据在数据库和应用服务器之间的传输&#xff0c;对于提高数据处理的效率是也有好处的。 存储过程思想上很简单&…