【发布时间】:2019-03-17 07:32:09
【问题描述】:
我编写这段代码是为了看看当我将两个字符串传递给一个函数并再次返回它们时会发生什么:
fn main() {
let mut s3 = String::from("hello");
let mut s4 = String::from("wolrd");
(s3, s4) = take_n_giveback(s3, s4);
println!("{0} and {1}", s3, s4);
}
fn take_n_giveback(x: String, y: String) -> (String, String) {
(x, y)
}
我收到一个无用的错误:
error[E0070]: invalid left-hand side expression
--> src/main.rs:5:5
|
5 | (s3, s4) = take_n_giveback(s3, s4);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ left-hand of expression not valid
此操作在传递单个字符串并返回时工作正常。
fn main() {
let mut s3 = String::from("hello");
s3 = take_n_giveback(s3);
println!("{0} ", s3);
}
fn take_n_giveback(x: String) -> (String) {
x
}
这里有什么问题?错误是什么意思,在代码中会遇到什么情况?
【问题讨论】:
-
绑定值时必须使用let,例如
let (s3, s4) = ... -
正如我提到的,它适用于单个变量而不使用 let 关键字。那么这是如何发生的。
-
这个例子对我来说似乎有点复杂,因为我是初学者,你能解释一下更新问题中第一个(不工作)和第二个例子(工作)之间的根本区别吗?
-
请花时间返回并重新阅读The Rust Programming Language,特别是section on variables。本书涵盖了许多介绍性主题,例如介绍性语法。