• rust编程-通用编程概念(chapter 3.4 & 3.5 注释和控制语句)


    目录

    4. 注释

    5. 控制流

    5.1 if表达式

    5.2 循环(loop、while和for)


    4. 注释

    与C/C++一致,Rust使用//起始注释文本内容,使用/*和*/来注释跨行文本内容。

    5. 控制流

    同其它编程语言,rust有自己的条件分支和循环支持。

    5.1 if表达式

    If以及可选的else/else if使用如下:

    1. fn main() {
    2. let number = 6;
    3. if number % 4 == 0 {
    4. println!("number is divisible by 4");
    5. } else if number % 3 == 0 {
    6. println!("number is divisible by 3");
    7. } else if number % 2 == 0 {
    8. println!("number is divisible by 2");
    9. } else {
    10. println!("number is not divisible by 4, 3, or 2");
    11. }
    12. }

    关于if条件判断,与其它编程语言有一个很重要的区别:rust不会自动转换非boolean类型为boolean类型,这里的条件必须是boolean类型。 如下是错误的代码,编译会报错:

    1. fn main() {
    2. let number = 3;
    3. // if number != 0 {
    4. if number {
    5. println!("number was three");
    6. }
    7. }

    使用太多的else if判断,会让代码显得混乱,第6章将介绍match分支

    if表达式另一个不同于C语言的特性是:if可以用作语句的右值中,这是因为if是表达式,有返回值。此时,if和else的两个分支返回的表达式值必须是相同类型。

    如下:

    1. fn main() {
    2. let condition = true;
    3. // if和else返回的表达式值类型不相同,编译出错
    4. // let number = if condition { 5 } else { "six" };
    5. let number = if condition { 5 } else { 6 };
    6. println!("The value of number is: {}", number);
    7. }

    {}括住的代码块的返回值是其中最后一个表达式的值

    5.2 循环(loop、while和for)

    • loop循环

    loop关键词对{}代码块的代码进行循环执行,直到跳出循环。

    1. fn main() {
    2. loop {
    3. println!("again!");
    4. }
    5. }

    在循环中,可以使用:

    1)break

    打断循环(跳出),到当前循环层外的第一条语句开始执行。

    2) continue

    忽略循环代码库中,此处之后的指令,返回到最内层循环代码块开始处执行下一轮循环。

    Rust loop循环有C语言没有的两个特性:

    1)loop标签

    对多层循环,可以指定每一层loop循环的标签,这样break和continue就可以指定跳出或继续到特定的loop标签。

    1. fn main() {
    2. let mut count = 0;
    3. 'counting_up: loop {
    4. println!("count = {}", count);
    5. let mut remaining = 10;
    6. loop {
    7. println!("remaining = {}", remaining);
    8. if remaining == 9 {
    9. break; // 只退出当前循环
    10. }
    11. if count == 2 {
    12. break 'counting_up; // 退出外层循环
    13. }
    14. remaining -= 1;
    15. }
    16. count += 1;
    17. }
    18. println!("End count = {}", count);
    19. }

    2)loop返回值

    在break跳出循环时,可以用break表达式带回一个返回值。 该返回值可以作为loop的返回值(暗示:有返回值,loop也是表达式?),如下:

    1. fn main() {
    2. let mut counter = 0;
    3. let result = loop {
    4. counter += 1;
    5. if counter == 10 {
    6. break counter * 2;
    7. }
    8. };
    9. println!("The result is {}", result);
    10. }
    • 有条件的while循环

    在进入循环前,可能需要判断循环条件,rust同样支持while的有条件循环。while是Rust内置的一个语言构造器。

    1. fn main() {
    2. let mut number = 3;
    3. while number != 0 {
    4. println!("{}!", number);
    5. number -= 1;
    6. }
    7. println!("LIFTOFF!!!");
    8. }
    • for迭代循环

    Rust支持for循环,来循环迭代集合中的每一个元素,并执行一定的指令。

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

    for循环的安全性和简洁性使其成为Rust中最常用的循环结构。在需要运行特定循环次数的某些指令代码时,可以使用标准库提供的一个Range,它按顺序生成所有数字,从一个数字开始,到另一个数字之前结束。如下:

    1. fn main() {
    2. // for number in (1..4) {
    3. for number in (1..4).rev() { // rev, to reverse the range
    4. println!("{}!", number);
    5. }
    6. println!("LIFTOFF!!!");
    7. }

    for循环的安全性体现在:不必像while那样手动维护循环的条件,就不会导致编码错误导致的循环次数不符合预期的情况。

    关于作者:

    犇叔,浙江大学计算机科学与技术专业,研究生毕业,而立有余。先后在华为、阿里巴巴和字节跳动,从事技术研发工作,资深研发专家。主要研究领域包括虚拟化、分布式技术和存储系统(包括CPU与计算、GPU异构计算、分布式块存储、分布式数据库等领域)、高性能RDMA网络协议和数据中心应用、Linux内核等方向。

    专业方向爱好:数学、科学技术应用

    关注犇叔,期望为您带来更多科研领域的知识和产业应用。

    内容坚持原创,坚持干货有料。坚持长期创作,关注犇叔不迷路

  • 相关阅读:
    CDN许可证申请
    SpringBoot整合Swagger3,赶紧整起来!
    C#的预处理指令
    SSO单点登录流程详解
    【SQL刷题】Day8----SQL排序检索数据专项练习
    python selenium 自动化爬虫与测试网页利器
    学习 Rust 的第十二天:如何使用向量
    【Python】《Python编程:从入门到实践 (第2版) 》笔记-Chapter8-函数
    华为HCIE云计算之ebackup备份FC虚拟机
    C语言:数组的插入
  • 原文地址:https://blog.csdn.net/landy_john/article/details/128043852