wap网站一键生成app,网站与网址的区别,登记注册身份验证app下载,08影院WordPress源码3.5.0. 写在正文之前
欢迎来到Rust自学的第三章#xff0c;一共有6个小节#xff0c;分别是:
变量与可变性数据类型#xff1a;标量类型数据类型#xff1a;复合类型函数和注释控制流#xff1a;if else#xff08;本文#xff09;控制流#xff1a;循环
通过第二章…3.5.0. 写在正文之前
欢迎来到Rust自学的第三章一共有6个小节分别是:
变量与可变性数据类型标量类型数据类型复合类型函数和注释控制流if else本文控制流循环
通过第二章的小游戏(没看的初学者强烈建议看一下)相信你已经学会了基本的Rust语法而在第三章我们将更深一层了解Rust中的通用的编程概念。
喜欢的话记得点赞、收藏加关注哦想要跟着学下去记得关注专栏哦
3.5.1. if表达式的基本认识
if表达式允许根据条件来执行不同的代码分支操作 这个条件必须是布尔类型。这点不同于Ruby、JS和C,它们会把if后的非布尔类型转换为布尔类型条件可以是一个字面值、一个表达式或是一个变量 if表达式中与条件相关联的代码就叫做分支在讲match时就有提到过这个概念可选的在后面可以加上一个else表达式
fn main(){let machine 6657;if machine 11451 {println!(condition is true);} else {println!(condition is false);}
}这个例子中,machine这个变量的值是小于11451 的所以程序会执行println!(condition is true);这一行如果修改machine的值使其不小于114514,那么程序就会执行else后的代码块。
3.5.2. 用else if处理多重条件
如果需要进行多重条件判断又不想在else下不停地写嵌套那么使用else if就是很好的选项。
fn main(){let number 6;if number % 4 0 {println!(Number is divisible by 4);} else if number % 3 0 {println!(Number is divisible by 3);} else if number % 2 0 {println!(Number is divisible by 2);} else {println!(Number is nor divisible by 4, 3 or 2);}
}6既能被3整除也能被2整除所以else if number % 3 0和else if number % 2 0都是true由于if、else if和else是按顺序从上到下判断的所以谁在前面就输出谁。在这个例子中else if number % 3 0在前面所以程序就会执行println!(Number is divisible by 3);而else if number % 2 0下的代码块就不会被执行。
如果程序中使用了多于一个else if那么最好使用match来重构代码。
比如上面那段话就可以重构为非唯一解
fn main() {let number 6;match number {n if n % 4 0 println!(Number is divisible by 4),n if n % 3 0 println!(Number is divisible by 3),n if n % 2 0 println!(Number is divisible by 2),_ println!(Number is not divisible by 4, 3, or 2),}
}显而易见使用match的代码更加直观
3.5.3. 在let语句中使用if
if在Rust中是一个表达式所以可以将它放在let语句中等号的右边
fn main(){let condition true;let number if condition { 5 } else { 6 };println!(The value of number is:{}, number);
}这个例子中因为condition是true,所以会把5赋给number最后的输出结果就是The value of number is:5如果condition是false那么就会把else后的值6赋给number。
这种写法于Python非常相像但是两者有本质上的区别 Rust: Rust 中的 if-else 是表达式可以直接返回值。换句话说if 结构本身可以参与到其他表达式的计算中。在 Rust 中几乎所有代码块都可以是表达式比如 {} 块也可以返回一个值。 Python: Python 中的 if-else 是一个特定的三元运算符形式专门为单行条件表达式设计。Python 的普通 if-else 语句是控制流的一部分它不返回值不能嵌入到其他表达式中。
fn main(){let condition true;let number if condition { 5 } else { 6 };println!(The value of number is:{}, number);
}这个例子在编译时会报错:if and else habe incompatible types就是if和else拥有不兼容的类型。因为Rust是一个静态强类型语言在编译时就必须知道变量的类型是什么以便这个变量在其他地方使用。在这个例子中if块下的返回值类型是i32,else块下的返回值是字符串类型编译器无法在编译时确定变量number的类型到底是i32还是字符串类型所以会报错。
一句话总结if-else 表达式的分支必须返回相同类型的值