条件执行
let x = 5;
if x == 5 {
println!("x is 5"); // done
}
if 表达式,相当于 JavaScript 的三元表达式:
let x_odd = if x % 2 == 0 { "odd" } else { "even" };
println!("x_odd is {}", x_odd); // x_odd is even
多个条件 (if/else if)
let x = 2;
let y = 5;
if x > y {
println!("x is greater than y");
} else if x < y {
println!("x is less than y"); // done
} else {
println!("x is equal to y");
}
循环
使用 loop
循环
loop {
if count == 10 {
break;
}
count += 1;
println!("count is {}", count);
}
loop 会循环执行某个语法快,直到使用 break
停止循环或是手动停止程序。
上述打印出:
count is 1
count is 2
count is 3
count is 4
count is 5
count is 6
count is 7
count is 8
count is 9
count is 10
从循环中返回某个值:
let result = loop {
if count == 15 {
// returning a value with break statement
break count * 20;
}
count += 1;
println!("count is {}", count); // 300
};
使用 while 循环
与 loop 循环不同的是,while 循环中 break 不能返回值。
let mut count = 0;
let letters: [char; 5] = ['a', 'b', 'c', 'd', 'e'];
while count < letters.len() {
println!("letter [{}] is {}", count, letters[count]);
count += 1;
}
结果:
letter[0] is a
letter[1] is b
letter[2] is c
letter[3] is d
letter[4] is e
for 循环
使用 iter()
方法返回一个迭代器。
迭代器对集合类元素实现迭代,使用 next()
方法返回下一个迭代。
for item in message.iter() {
println!("current item is {}", item);
}
使用 enumerate()
返回一个元组,包含当前迭代的元素的索引和引用。推荐对该元组进行解构。
for (index, &item) in message.iter().enumerate() {
println!("item {} is {}", index, item);
if item == 'e' {
break;
}
}
因为返回的元组中是元素的引用,使用 &item
可以借用变量而不取得所有权。在循环中可以访问该变量。
迭代一组数字:
for number in 0..5 {
println!("number is {}", number);
}
number is 0
number is 1
number is 2
number is 3
number is 4