gpt4 book ai didi

parameters - 重新分配参数绑定(bind)的惯用方法是什么?

转载 作者:行者123 更新时间:2023-11-29 07:57:32 26 4
gpt4 key购买 nike

有时我会重新分配参数绑定(bind),因为不再需要原始绑定(bind)并且可能会导致混淆。处理这个问题的惯用方法是什么?例如:

fn foo(s: &str) {
let s = s.trim();
}

fn foo(mut s: &str) {
s = s.trim();
}

最佳答案

第一个解决方案更好。在可能的情况下,不可变绑定(bind)总是优于可变绑定(bind)。这就是为什么 Rust 的绑定(bind)在默认情况下是不可变的,以及为什么你必须输入一个额外的关键字才能像大多数过程语言一样拥有一个变量。

当你使用可变变量时,你可能会不小心改变值:

fn foo(mut i1: u32) {
i1 = i1.count_ones();
let mut i2 = 0_u32;

// Some lines

i1 = 42; // Oops, I wrote `i1` instead of `i2`
}

如果您使用不可变版本,则不会发生这种情况:

fn foo(i1: u32) {
let i1 = i1.count_ones();
let mut i2 = 0_u32;

// Some lines

i1 = 42; // error[E0384]: re-assignment of immutable variable `i1`
}

只有当您必须将可变变量提供给另一个作用域以进行修改时,才需要使用可变变量:

fn main() {
let mut to_be_modified = 123;

{
// do something in another scope
to_be_modified = 456;
}

// in another function
foo(&mut to_be_modified);
}

fn foo(i: &mut i32) {
*i = 789;
}

关于parameters - 重新分配参数绑定(bind)的惯用方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47825777/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com