【问题标题】:Does Rust have an elegant way to manipulate values further when assigning a value from a block statement?从块语句中分配值时,Rust 是否有一种优雅的方式来进一步操作值?
【发布时间】:2020-06-10 16:47:12
【问题描述】:

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

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】:

伪代码的问题在于x 是不可变的——它无法更改。要达到预期的效果,您必须使x 可变,并且可以使用x += 1 增加它,而不是x + 1

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

将返回 8。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 2021-06-09
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多