"expected identifier, found (" 尝试绑定元组变量时
"expected identifier, found (" when trying to bind a tuple variable
我正在玩 Rust,但卡住了。我有以下功能:
fn addOne(h: (i32, i32, i32)){
let mut (x, y, z) = h;
(x+1, y+1, z+1)
}
编译时出现以下错误:
example.rs:2:10: 2:11 error: expected identifier, found `(`
example.rs:2 let mut (x, y, z) = h;
绑定有问题吗?抱歉,这么简单的问题。
mut
限定符适用于每个变量。当你解构一个变量时,每个变量可以是可变的也可以不是:
fn add_one(h: (i32, i32, i32)) -> (i32, i32, i32) {
let (mut x, mut y, mut z) = h;
(x+1, y+1, z+1)
}
当然,这里根本不需要可变性:
fn add_one(h: (i32, i32, i32)) -> (i32, i32, i32) {
let (x, y, z) = h;
(x+1, y+1, z+1)
}
你也可以在函数签名中选择解构:
fn add_one((x, y, z): (i32, i32, i32)) -> (i32, i32, i32) {
(x+1, y+1, z+1)
}
或者使用默认的元组访问器方法:
fn add_one(h: (i32, i32, i32)) -> (i32, i32, i32) {
(h.0 + 1, h.1 + 1, h.2 + 1)
}
如果您想就地改变元组,您将需要为元组提供一个可变引用。在不了解您要解决的问题的更多信息的情况下,我会积极劝阻您不要选择这条道路,至少在您分析并确定您需要它之前:
fn add_one(h: &mut (i32, i32, i32)) {
h.0 += 1;
h.1 += 1;
h.2 += 1;
}
fn main() {
let mut a = (1, 2, 3);
add_one(&mut a);
println!("{:?}", a)
}
有很多方法可以编写对您有意义的代码!
我正在玩 Rust,但卡住了。我有以下功能:
fn addOne(h: (i32, i32, i32)){
let mut (x, y, z) = h;
(x+1, y+1, z+1)
}
编译时出现以下错误:
example.rs:2:10: 2:11 error: expected identifier, found `(`
example.rs:2 let mut (x, y, z) = h;
绑定有问题吗?抱歉,这么简单的问题。
mut
限定符适用于每个变量。当你解构一个变量时,每个变量可以是可变的也可以不是:
fn add_one(h: (i32, i32, i32)) -> (i32, i32, i32) {
let (mut x, mut y, mut z) = h;
(x+1, y+1, z+1)
}
当然,这里根本不需要可变性:
fn add_one(h: (i32, i32, i32)) -> (i32, i32, i32) {
let (x, y, z) = h;
(x+1, y+1, z+1)
}
你也可以在函数签名中选择解构:
fn add_one((x, y, z): (i32, i32, i32)) -> (i32, i32, i32) {
(x+1, y+1, z+1)
}
或者使用默认的元组访问器方法:
fn add_one(h: (i32, i32, i32)) -> (i32, i32, i32) {
(h.0 + 1, h.1 + 1, h.2 + 1)
}
如果您想就地改变元组,您将需要为元组提供一个可变引用。在不了解您要解决的问题的更多信息的情况下,我会积极劝阻您不要选择这条道路,至少在您分析并确定您需要它之前:
fn add_one(h: &mut (i32, i32, i32)) {
h.0 += 1;
h.1 += 1;
h.2 += 1;
}
fn main() {
let mut a = (1, 2, 3);
add_one(&mut a);
println!("{:?}", a)
}
有很多方法可以编写对您有意义的代码!