嵌套循环会打印出奇怪的结果

时间:2018-11-27 04:29:21

标签: rust

试图检查2d向量并注意到一些我无法找到解释的奇怪行为。

fn main() {
    let mut main_loop = vec![];
    let mut x = 0;
    let board_x = 10;
    let mut y = 0;
    let board_y = 10;

    while y < board_y {
        let mut row = vec![];
        while x < board_x {
            let v = random::<bool>();
            println!("x:{}", x);
            row.push(v);
            x = x + 1;
        }
        println!("y:{}", y);
        main_loop.push(row);
        y = y + 1;
    }
}

仅打印

x:0
x:1
x:2
x:3
x:4
x:5
x:6
x:7
x:8
x:9
y:0
y:1
y:2
y:3
y:4
y:5
y:6
y:7
y:8
y:9

这不是应该将x:1-x:10打印10次吗?同样更奇怪的是,当我使用嵌套的for循环为每行循环回向量时,它在退出之前先计数出60个索引。我想念什么?

1 个答案:

答案 0 :(得分:3)

  

这不是应该将x:1-x:10打印10次吗?

为什么会这样?内循环完成后,您再也不会将x设为零。

除此之外,这种迭代还应该通过for循环来完成:

for x in 0..10 { ... }
  

[...]当我使用嵌套的for循环为每行循环回向量时,它在退出之前先计数出60个索引。

我不知道;您没有发布该代码,而且我也看不出有任何理由这样做。