当从块语句中赋值时,Rust是否有一种优雅的方法来进一步操作值?

问题描述 投票:-1回答:1

我正试图在一个块中用表达式声明一个变量。

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
};
rust instantiation
1个回答
2
投票

伪代码的问题在于 x 是不可改变的--不能改变。为了达到预期的效果,您必须使 x 可变,而且可以通过 x += 1,不 x + 1:

let y = {
    let z = 2;
    let mut x = 3;
    x += 1;
    x * z
};

将返回8。

© www.soinside.com 2019 - 2024. All rights reserved.