如何在Rust'中使用多个变量;什么是循环?
在C语言家族中,我可以在一行上完成这项工作:如何在Rust'中使用多个变量;什么是循环?,rust,Rust,在C语言家族中,我可以在一行上完成这项工作: for(int i=lo,int j=mid+1;i您可以创建两个并行范围迭代器,将它们合并,然后通过组合进行迭代: fn main() { let values = [10, 20, 30, 40, 50, 60, 70, 80, 90]; let lo = 2; let mid = 5; let hi = 7; let early_indexes = lo..(mid + 1); let late
for(int i=lo,int j=mid+1;i您可以创建两个并行范围迭代器,将它们合并,然后通过组合进行迭代:
fn main() {
let values = [10, 20, 30, 40, 50, 60, 70, 80, 90];
let lo = 2;
let mid = 5;
let hi = 7;
let early_indexes = lo..(mid + 1);
let late_indexes = (mid + 1)..(hi + 1);
for (i, j) in early_indexes.zip(late_indexes) {
println!("{}, {}", i, j);
println!("{} - {}", values[i], values[j]);
}
}
总有一天,包含范围,您应该能够这样做(取决于最终的语法):
如果您确实在迭代一个切片,如我在示例中所示,您也可以直接组合两个迭代器并忽略索引:
let early_values = values[lo..(mid + 1)].iter();
let late_values = values[(mid + 1)..(hi + 1)].iter();
for (i, j) in early_values.zip(late_values) {
println!("{}, {}", i, j);
}
变量i
不会增加5,而是增加1
是的,一步一步递增是很烦人的,总有一天会这样。同时:
如果需要完全控制,则始终可以使用while
或loop
:
let mut i = 0;
while i < n {
if a[i] == ... {
i += 5;
}
i += 1;
}
设mut i=0;
而我{
如果a[i]=={
i+=5;
}
i+=1;
}
谢谢~它可以工作。Rust's for loop使用迭代器,这使得在某些情况下使用算术有点麻烦。正如for(int i=0;i
在Rust中它使用迭代器,因此for i In 0..n{if a[i]==…{i+=5;}
未工作。变量i
不会在下一个回合中添加5个回合,而是添加1个回合…感谢您提供解决我问题的详细说明~
let early_indexes = lo...mid;
let late_indexes = (mid + 1)...hi;
for (i, j) in early_indexes.zip(late_indexes) {
println!("{}, {}", i, j);
println!("{} - {}", values[i], values[j]);
}
let early_values = values[lo..(mid + 1)].iter();
let late_values = values[(mid + 1)..(hi + 1)].iter();
for (i, j) in early_values.zip(late_values) {
println!("{}, {}", i, j);
}
let mut i = 0;
while i < n {
if a[i] == ... {
i += 5;
}
i += 1;
}