前言:
本来想写这玩意的,可是 Rust 在这些东西上还是可以玩出一些其它语言没有的花样的。
记录一下!
控制流
控制流 是一种控制程序运行的机制。像 C 语言中的 if、while 之类按一定的顺序排列程序元素来决定程序执行的顺序便是控制流。
理论都是抄来的……不管这些。
一、if 表达式
if 表达式允许根据条件执行不同的代码分支。
简单说就是,它会根据一个指定布尔值来决定是否执行某段代码。
fn main() {
//问问程序,你帅不帅
let is_handsome = true;
println!("看这篇文章的小伙帅吗?");
if is_handsome {
println!("帅啊!")
}else{
println!("还不错!")
}
}
输出:
看这篇文章的小伙帅吗?
帅啊!
在 Rust ,还可以这么操作:
fn main() {
//问问程序,你帅不帅
let is_handsome = true;
println!("这小伙咋样?");
let result:&str = if is_handsome {
"这小伙还会这招,好帅啊!"
}
else {
"还不错!"
};
println!("{}",result);
}
输出:
这小伙咋样?
这小伙还会这招,好帅啊!
二、循环结构
在 Rust 中,共有 三 种循环结构:while、for 和 loop。
1、while 条件循环
这个和其它语言类似,比如计算 1~100 的和:
fn main() {
let mut sum = 0;
let mut number = 1;
const LIMIT:i32 = 100;
while number <= LIMIT {
sum += number;
number +=1;
}
println!("1~100 的和为:{}",sum);
}
输出:
1~100 的和为:5050
Rust 估计是出于某种原因没有 C 语言一样的 for 循环(特指计次循环)。
2、for 循环
利用数组的遍历数组。有点像 C# 的 foreach 循环。
fn main() {
let numbers = [1, 2, 3, 4, 5];
for n in numbers.iter() {
println!("{}", n);
}
}
为啥要这样做,通过下标遍历不好吗?不要忘了,Rust 是一门追求安全的语言,编译器会增加运行时的代码来保证通过下标访问数组元素的安全性——确保下标不会越界访问数组。而且利用迭代器代码的适用性也变强了,如果给 numbers
再加上元素通过下标访问的代码就需要重新定义下标的最大大小了。
当然,两者互有不可替代性。
3、loop
一个“环”?没错,这相当于其他语言中所谓的 死循环( while(true)
)。
但更简洁了不是?
use std::io::stdin;
fn main() {
let mut reader = String::new();
loop{
println!("我帅吗?[Y/n]:");
//读取结果
stdin().read_line(&mut reader).expect("会不会打字啊!");
//记得清除左右两边的玩意
//也可以 reader == "Y\n"
if reader.trim() == "Y"{
break;
}
}
println!("没那么好啦!");
}
——————
通过写博客掌握 Rust 的神级语法。
顺带丰富 Rust 资料……
二零二零年四月二十三日。