if语句的判断式必须是bool类型的,不能有隐式的转换。如果if分支里边最后是一个值,那么每一个分支都必须是一个值。
match语句类似c的switch。当找到一个匹配项,只执行改分支,不需要加一个break。一个分支匹配多个不同的值用“|”分隔。可以用“
Read more...
M..N
”表示两个数字值范围。下划线匹配任何单个值。
每一个分支之间用逗号分隔,如果用大括号包含就可以省略逗号。
match my_number {
0 => println!("zero"),
1 | 2 => println!("one or two"),
3..10 => println!("three to ten"),
_ => println!("something else")
}
use std::f64;
use std::num::atan;
fn angle(vector: (f64, f64)) -> f64 {
let pi = f64::consts::PI;
match vector {
(0.0, y) if y < 0.0 => 1.5 * pi,
(0.0, _) => 0.5 * pi,
(x, y) => atan(y / x)
}
}
变量名可以匹配任意值,并且这个变量名绑定匹配到的值,可在分支里进行操作。“variable @ pattern
”后边是匹配规则,前边是绑定的变量名。任何一个match分支可以有一个if语句,在匹配成功后进行判断。
循环。while的条件也必须是bool类型,break停止循环,continue进行下次循环。loop相当于while ture。for的两个例子:
for n in range(0, 5) {
println!("{}", n);
}
let s = "Hello";
for c in s.chars() {
println!("{}", c);
}
for可用于任何迭代器。