scope - 重新绑定(bind)在 for 循环中不起作用的变量

标签 scope rust

我正在尝试编写一个迭代多次的循环,它还会更新 Rust 中的一个变量。

fn get_next(input: &[u8]) -> (u8, &[u8]) {
    (input[0], &input[1..])
}

fn main() {
    let slice: &[u8] = &vec![1, 2, 3, 4];
    for _ in 0..4 {
        let (mynum, slice) = get_next(slice);
        println!("Here's mynum {} slice {:?}", mynum, slice);
    }
}

代码在 Rust Playground 上.

这是输出:

Here's mynum 1 slice [2, 3, 4]
Here's mynum 1 slice [2, 3, 4]
Here's mynum 1 slice [2, 3, 4]
Here's mynum 1 slice [2, 3, 4]

我希望每次更改 slice 变量以指向下一个子切片。如何获取要更新的 slice 变量?

这是一个最小的示例,如果我真的在切片中迭代 u8,我会采用不同的方式。

最佳答案

您正在定义一个新变量来覆盖外部变量。也许:

let mut slice: &[u8] = &vec![1, 2, 3, 4];
for _ in 0..4 {
    let (mynum, slice_) = get_next(slice);
    slice = slice_;
    println!("Here's mynum {} slice {:?}", mynum, slice);
}

关于scope - 重新绑定(bind)在 for 循环中不起作用的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38396093/

相关文章:

javascript - 函数内部 Javascript 全局变量绑定(bind)的状态

function - 在 Julia 的函数作用域内的 if 语句内定义函数的结果错误

javascript - 访问 javascript 中内联函数内所做的变量修改

rust - 如何找到 `rustc --target=$TARGET`链接到哪个libc.so?

rust - 是否可以在不复制数据的情况下将 Vec<&[u8]> 展平为 &[u8] ?

javascript - 惊讶于全局变量在 JavaScript 中具有未定义的值

JavaScript(变量范围): variable does not get the value assigned to it

rust - 当特征和结构使用相同的方法名时如何调用方法?

rust - Rust 中类似结构的重复代码删除

oop - 为什么 Rust 不支持特征对象向上转换?