[20190418]

控制流,条件语句,模式匹配。

fn main() {// ==, !=, >, <,let n = 2;if n < 5 {println!("true");} else {println!("false");}
}
fn main() {// ==, !=, >, <,let n = 10;if n % 4 == 0 {println!("n is divisible by 4");} else if n % 3 == 0 {println!("n is divisible by 3");} else if n % 2 == 0 {println!("n is divisible by 2");} else {println!("n is not divisible by 4, 3, 2");}
}
fn main() {let c = true;let n = if c {50} else {26};println!("n: {}", n);
}

这种用条件语句判定来决定如何绑定,类型需要一致,不能一个是数字,一个是字符串等。

循环

fn main() {// infinite looploop {println!("infinite");}
}
fn main() {let mut c = 0;// infinite looploop {println!("finite");// c++; // no goodc += 1;if c > 10 {break;}}
}

break关键字

fn main() {'a: loop {println!("loop a");'b: loop {println!("loop b");'c: loop {println!("loop c");}}}
}

输出:

a b c c c c c c c c c c...

fn main() {'a: loop {println!("loop a");'b: loop {println!("loop b");'c: loop {println!("loop c");break }}}
}

输出:

a b c b c b c b c...

fn main() {'a: loop {println!("loop a");'b: loop {println!("loop b");'c: loop {println!("loop c");break 'b}}}
}

输出:

a b c a b c a b c a b c...

fn main() {'a: loop {println!("loop a");'b: loop {println!("loop b");'c: loop {println!("loop c");break 'bif true {continue} else {break}}}}
}

while循环

fn main() {let mut n = 10;while n != 0 {println!("{}", n);n = n - 1;}
}

for循环

fn main() {let a = vec![10, 20, 30, 40, 50];for i in a {println!("i: {}", i);}
}
fn main() {for i in 1..101 {println!("i: {}", i);}
}

Rust中表示区间的方法:a..b表示[a,b)

Pattern Matching

fn main() {let x = 5;match x {1 => println!("one"),2 => println!("two"),3 => println!("three"),4 => println!("four"),5 => println!("five"),6 => println!("six"),_ => println!("something else"),}
}

最后的default,用_表示。

更复杂一些的:

fn main() {let n = 15;match n {1 => println!("one"),2 | 3 | 5 | 7 | 11 => println!("This is a prime"),13...19 => println!("A teen"), // 三个点_ => println!("Ain't special"),}
}

注意到13到19表示方法是13...19,包含19。

fn main() {let pair = (0, -2);match pair {(0, y) => println!("y: {}", y),(0, x) => println!("x: {}", x),_ => println!("no match"),}
} // y: -2

这是模式的匹配。

match还可以组合条件判断语句联合使用:

fn main() {let pair = (5, -5);match pair {(x, y) if x == y => println!("equal"),(x, y) if x + y == 0 => println!("equal zero"),(x, _) if x % 2 == 0 => println!("x is even"),_ => println!("no match"),}
}

相当于在匹配之外添加过滤条件,这种称之为guard.

@关键字,表示数字在这个区间:

fn main() {let p = 12;match p {n @ 1...12 => println!("n: {}", n),n @ 13...19 => println!("n: {}", n),_ => println!("no match"),}
} // n: 12

注意这里的n是没有用let定义的。

稍微变一下就是过滤+匹配来赋值的操作:

fn main() {let p = 12;let n = match p {n @ 1...12 => n,n @ 13...19 => n,_ => 0,};println!("n: {:?}", n);
}

2019.10 Update:

第一届PAT算法直播课培训班招募帖,欢迎点击查看详情、

参考

https://www.youtube.com/watch?v=CuhsFn2xpa8&list=PLJbE2Yu2zumDF6BX6_RdPisRVHgzV02NW&index=5

Rust之控制流,条件语句,模式匹配相关推荐

  1. java的使用条件_Java使用条件语句和循环结构确定控制流

    与任何程序设计语言一样,Java使用条件语句和循环结构确定控制流.本文将简单讲解条件.循环和switch. 一.块作用域 块(block),即复合语句.是指由一对大括号括起来的若干条简单的Java语句 ...

  2. 编译原理—中间代码生成、布尔表达式翻译、短路计算、控制流语句翻译、条件语句、循环语句

    编译原理-中间代码生成.布尔表达式翻译.短路计算.控制流语句翻译.条件语句循环语句 1.布尔表达式的翻译 1.1 数值表示法 1.2举例 1.3短路计算 1.4回填技术 1.5短路计算及回填的翻译方案 ...

  3. C++primer 第 5 章语句 5.2语句作用域 5.3条件语句 5 . 4 迭代语句 5.5跳转语句 5.6 try语句块和异常处理

    5 . 1 简单语句 C++语言中的大多数语句都以分号结束,一个表达式,比如ival + 5 , 末尾加上分号就变成了表达式语句(expression statement).表达式语句的作用是执行表达 ...

  4. 第六章—条件语句和循环

    2019独角兽企业重金招聘Python工程师标准>>> 6.1①条件语句在脚本中称为控制流.②尽管JavaScript不支持"elseif"关键字,但是允许通过i ...

  5. 语义分析——声明语句、赋值语句、条件语句和循环语句的翻译

    接下来介绍各种常用语句在语义分析中如何翻译. 声明语句的翻译 程序语言中的声明语句都是给编译程序提供信息的,其作用是告知编译器把某个名字和某个类型联系起来,并为它分配相应的内存空间. 因此对声明语句一 ...

  6. 【TypeScript】条件语句

    条件语句用于基于不同的条件来执行不同的动作. TypeScript 条件语句是通过一条或多条语句的执行结果(True 或 False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: ...

  7. Python基础必掌握的条件语句详解

    Python 中的条件语句根据特定布尔约束的计算结果为真或假,执行不同的计算或操作.条件语句由 Python 中的 IF 语句处理. 到目前为止演示的代码都是由顺序执行组成的.但是实际情况是通常程序需 ...

  8. Go 学习笔记(8)— 条件语句(if、if...else...、switch、fallthrough)

    Go 语言提供了以下几种条件判断语句: 语句 描述 if 语句 if 语句 由一个布尔表达式后紧跟一个或多个语句组成 if-else 语句 if 语句 后可以使用可选的 else 语句, else 语 ...

  9. 用python循环语句求素数_Python基础入门_3条件语句和迭代循环

    Python 基础入门前两篇: Python 基础入门--简介和环境配置 Python基础入门_2基础语法和变量类型 这是第三篇内容,主要简单介绍条件语句和迭代循环语句,内容也比较简单,目录如下: 条 ...

最新文章

  1. JVM 调优实战--VisualVM综合分析可视化工具的使用教程(含远程JMX连接)
  2. linux推出mysql对话_以及如何配置它以与Linux平台上的MySQL数据库对话
  3. python 逻辑运算符 数据类型_python02-运算符和基本数据类型
  4. windows下ab的安装和压测
  5. C#相关基础知识点总结+基础代码
  6. Heroku和Java –从新手到初学者,第1部分
  7. 「经营分析报告」怎么做?这套模板让领导一看就懂
  8. 【BZOJ2115】Xor,第一次的线性基
  9. Idea Intellij 常用快捷键
  10. 静态成员变量以及静态成员函数
  11. g++编译时,出现test.c:(.text+0xc7):对‘cv::_InputArray::_InputArray(cv::Mat const)’未定义的引用
  12. egret给对象涂颜色
  13. 讲一个故事:Redis的默认端口是6379
  14. 2019年30岁完成从一名程序员转行成一名高中信息技术教师
  15. 安卓一键清理内存_【安卓】手机垃圾清理,拯救内存空间
  16. 入侵学校服务器修改成绩 :)
  17. 等一等!看一看!缓一缓!
  18. 计算机病毒辽师大教案,2019年四年级信息技术下册 第二课 计算机病毒知识二教案 辽师大版.doc...
  19. C#调用TSC条码打印机打印条码(转)
  20. ssh报user not allowed because account is locked错误

热门文章

  1. caffe学习日记--lesson4:windows下caffe DEMO (mnist and cifar10)
  2. JavaScript中的面向对象--对象继承
  3. process id linux,userdel:user* is currently used by process id
  4. treemap底层结构_HashMap面试必问的数据结构相关知识总结
  5. 进入已经打开的pyrebox_PyREBox-可用Python编写脚本的逆向工程沙盒
  6. python回溯算法全排列_python 回溯法 子集树模板 系列 —— 11、全排列
  7. 服务器里的文件链接地址怎么写,服务器里的文件链接地址怎么写
  8. oracle 分页过程,oracle存储过程分页的完整例子
  9. 芜湖机器人餐厅地址_自助餐哪家强?得看谁让你扶墙... 芜湖8家自助餐厅超强攻略来了...
  10. html button样式_HTML基础