当从块语句中赋值时,Rust 是否有一种优雅的方式来进一步操作值?
Does Rust have an elegant way to manipulate values further when assigning a value from a block statement?
我正在尝试在块中声明一个带有表达式的变量。
let y = {
let x = 3;
x + 1
};
下面的代码等于 4。据我了解,块中的最后一个元素不能有分号,因为这使该表达式成为一个语句。
如果我想进一步操纵这些值怎么办?例如,如果我想实例化两个变量并将它们相乘怎么办? Rust 是否有一种优雅的方式来处理这个问题,或者我是否需要将其拆分为多个表达式?
伪代码:
//An attempt to multiply two instantiated values in a block
let y = {
let z = 2;
let x = 3;
x + 1;
x * z
};
伪代码的问题在于 x
是不可变的——它无法更改。为了达到预期的效果,您必须使 x
可变并且可以使用 x += 1
增加它,而不是 x + 1
:
let y = {
let z = 2;
let mut x = 3;
x += 1;
x * z
};
将 return 8.
我正在尝试在块中声明一个带有表达式的变量。
let y = {
let x = 3;
x + 1
};
下面的代码等于 4。据我了解,块中的最后一个元素不能有分号,因为这使该表达式成为一个语句。
如果我想进一步操纵这些值怎么办?例如,如果我想实例化两个变量并将它们相乘怎么办? Rust 是否有一种优雅的方式来处理这个问题,或者我是否需要将其拆分为多个表达式?
伪代码:
//An attempt to multiply two instantiated values in a block
let y = {
let z = 2;
let x = 3;
x + 1;
x * z
};
伪代码的问题在于 x
是不可变的——它无法更改。为了达到预期的效果,您必须使 x
可变并且可以使用 x += 1
增加它,而不是 x + 1
:
let y = {
let z = 2;
let mut x = 3;
x += 1;
x * z
};
将 return 8.