4
我刚刚开始学习Rust
。在我用这种语言的第一步,我发现了一个奇怪的现象,当在下面的例子中main
或其他功能进行迭代:为什么从负数开始的范围不会迭代?
fn myfunc(x: &Vec<f64>) {
let n = x.len();
println!(" n: {:?}", n);
for i in -1 .. n {
println!(" i: {}", i);
}
}
fn main() {
for j in -1 .. 6 {
println!("j: {}", j);
}
let field = vec![1.; 6];
myfunc(&field);
}
虽然main
循环正常显示,没有打印的里面myfunc
循环,我得到以下输出:
j: -1
j: 0
j: 1
j: 2
j: 3
j: 4
j: 5
n: 6
什么是这种行为的原因是什么?
这是令人惊讶的行为。我希望'rustc'至少会发出一个警告,即负值被“包裹”。 –
@MatthieuM。哦,谢谢你提醒我!它实际上*是*固定的,看我的更新。^_^ – Shepmaster
啊!谈好时机! –