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
啊!談好時機! –