继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【金秋打卡】第2天 Rust if 条件表达式

stb烙饼
关注TA
已关注
手记 84
粉丝 2
获赞 4

课程章节: 第4章 Rust 流程控制

课程老师叶枭

课程内容:

今天学习的内容是 Rust 中的 if 条件表达式。

if 表达式

前文说过了,Rust 是基于表达式的语言。所以其他语言中的 if 条件语句,在 Rust 中叫作是 if 条件表达式。

条件表达式用于流程控制,如果满足条件,则执行一个分支逻辑,否则执行另一个分支逻辑。和其他语言不同的是,if 关键字后面不需要加圆括号 ()

fn main() {  
 let num = 5;  
 if num < 5 {  
 println!("num 小于5");  
 } else if num == 5 {  
 println!("num 等于5");  
 } else {  
 println!("num 大于5");  
 }  
}

执行代码,打印 “num 等于5”。

既然是表达式,意味着它有返回值,如果 if 表达式有返回,则要求每个分支返回的值的类型都一致,比如下面的示例中每个条件分支返回的类型都是整数型:

fn main() {  
 let n = 10;  
 let m = if n > 10 {  
 15;   
 } else {  
 5;   
 }; // 注意这里的分号,它是 let 变量声明的分号  
    
 println!("m = {}", m);   
}

代码执行,打印结果为 m = 5

在弱类型语言比如 JS 中,1'hello', [] 这些被称为真值表达式,也就是说它们在需要的时候能转换为 truenullundefined 为假值表达式,可以转换为 false

// [] 转为 true,条件成立  
if([]) {   
 console.log('[]')  
}  
​  
// null 转为 false,条件不成立  
if(null) {  
 console.log(null)  
}

而Rust 是强类型语言,不存在隐式类型转换,所以条件表达式必须产生一个 bool 类型的值,要么是 true ,要么是 false。不能是像 JS 中那样,写成真值或假值表达式,比如:

fn main() {  
 if 10 {  
 println!(10);   
 }  
}

代码运行会报错,提示类型不匹配,需要 bool 类型,但是传递了整数型:

image-20220912150438320

课程收获

这节课学习了 Rust 中的 if 表达式,它用于条件判断,执行不同的分支逻辑。和其他语言不同的是,它的条件表达式不使用圆括号包裹,条件分支可以有返回值,并且条件表达式必须返回一个 true 或者 false,不能通过隐式类型抓换的方式去获得。
图片描述

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP