难度: 简单
原描述:
思路
使用标准库:
1 | package main |
Rust版本1:
1 | fn main() { |
Rust版本2:
1 | fn main() { |
Rust中为什么没有i++和i–?
在Rust语言中,i++ 和 i-- 这样的后缀自增和自减运算符是故意被省略的。这种设计选择的原因包括:
明确性和易读性:Rust强调代码的明确性和易读性。在C++等语言中,
i++和i--可以在表达式中使用,有时会导致理解上的混淆,特别是当它们与其他运算符混合使用时。Rust倾向于更明确、不容易出错的方式,如i += 1或i -= 1。避免不必要的复杂性:自增和自减运算符在某些情况下可以导致不必要的复杂性,尤其是在涉及运算符重载或复杂表达式时。Rust试图避免这种复杂性。
表达意图更清晰:使用
i += 1或i -= 1使得代码的意图更加清晰和直接。这种方式明确表达了对变量的操作,而不是依赖于特定的运算符语义。与Rust的安全和并发原则相符:Rust的设计重点是安全性和并发编程。在并发环境中,明确地表达状态变化是非常重要的,而后缀自增和自减运算符可能会隐藏这些变化的细节。
总之,Rust没有包含 i++ 和 i-- 是为了保持语言的简洁性,减少代码中的潜在错误,并鼓励开发者编写明确、易于理解的代码。
那在遍历时,怎么控制i的增减?
在Rust中,控制循环变量(如 i)的增减通常通过不同的方式实现,而不是使用传统的 i++ 或 i--。这里有几种常见的方法:
使用范围和
for循环:Rust中最常见的遍历方式是使用for循环和范围操作符。这种方法在遍历数组、向量(vector)或其他集合时非常有效。1
2
3
4
5
6
7for i in 0..10 {
println!("{}", i); // 正向遍历:0, 1, 2, ..., 9
}
for i in (0..10).rev() {
println!("{}", i); // 反向遍历:9, 8, 7, ..., 0
}显式地修改循环变量:如果你需要更复杂的控制,可以使用
while循环或循环中的if语句来显式地增减变量。1
2
3
4
5let mut i = 0;
while i < 10 {
println!("{}", i);
i += 1; // 明确增加i
}或者根据条件进行增减:
1
2
3
4
5
6
7
8
9let mut i = 0;
while i < 10 {
println!("{}", i);
if condition {
i += 2; // 某种条件下增加
} else {
i += 1; // 默认增加
}
}迭代器和函数式方法:Rust还支持迭代器和链式函数调用,这在处理集合时尤其有用。你可以使用迭代器方法来过滤、映射、折叠(fold)等。
1
(0..10).filter(|&x| x % 2 == 0).for_each(|x| println!("{}", x)); // 遍历偶数
在大多数情况下,Rust推荐使用第一种方法,即使用 for 循环和范围。这种方法不仅代码简洁,而且避免了潜在的边界错误。当然,根据你的具体需求,其他方法也可以非常有效。
原文链接: https://dashen.tech/2015/03/01/leetcode-58-最后一个单词的长度/
版权声明: 转载请注明出处.