当前位置: 首页 > 知识库问答 >
问题:

Rust中if-else条件赋值的惯用方法

章宏峻
2023-03-14

在Rust中,在“if-else”构造中,创建或将多个对象之一指定给变量的首选方式是什么?由于范围限制,似乎必须在if-else之外创建变量。我想到的两种方式都不太好。以字符串为例,这里有一种方法,但它会生成一个关于未使用的赋值的警告:

let mut s = String::new();
if condition {
    s = "first".to_string();
} else {
    s = "second".to_string();
}

另一种选择是:

let mut s = "second".to_string();
if condition {
    s = "first".to_string();
}

它更短,并且不生成警告,但是意味着s被分配了两次,并且意味着第二次。to_string()运行,但是如果条件为真,则会被浪费。如果不是简单的字符串创建,这些都是昂贵的操作(可能有副作用),这种方法就不合适了。

还有更好的选择吗?

共有1个答案

上官高逸
2023-03-14

在Rust中,if/ther块是一个表达式。也就是说,块本身有一个值,相当于执行的任何部分中的最后一个表达式。考虑到这一点,我将这样结构您的代码

let s = if condition {
    "first"
} else {
    "second"
}.to_string();
 类似资料:
  • 我目前正在了解React Native中的if-else if-else语句的语法。下面是我理解的一个简单的if-else条件: 但是,当添加另一个条件来生成if-else if-else语句时,我遇到了问题。 如果有人能指出我的缺点,我将不胜感激!

  • Go语言的条件判断结构也很简单。 package main import "fmt" func main() { // 基本的例子 if 7%2 == 0 { fmt.Println("7 is even") } else { fmt.Println("7 is odd") } // 只有if条件的情况 if 8%4

  • 我有一个简单的角度/html代码,其中有一个表,每个

  • 问题内容: 我正在重构现有代码。它实际上可以正常工作,但是在检查一个变量的值并将第二个变量的值更改为取自固定枚举结构的更新后的值的多个if-else条件下有点混乱。 我对重构和清理此代码的最佳方法感到有些困惑。您是否建议使用开关?还是更优雅的东西? 提前致谢! 问题答案: 至少对于J2SE 1.5转发,您可以为枚举赋予额外的属性。这意味着您可以用类似如下的内容替换整个if-else字符串 现在,在

  • 主要内容:if else 如何判断表达式是否成立前面我们看到的代码都是顺序执行的,也就是先执行第1条语句,然后是第2条、第3条……一直到最后一条语句,这称为 顺序结构。 但是对于很多情况,顺序结构的代码是远远不够的,比如一个程序限制了只能成年人使用,儿童因为年龄不够,没有权限使用。这时候程序就需要做出判断,看用户是否是成年人,并给出提示。 在 Python 中,可以使用 if else 语句对条件进行判断,然后根据不同的结果执行不同的代码,这称

  • 我在枚举中有6个值,使用6 if else是一种很糟糕的做法。我们能以更好的方式实现这一点吗?下面是我的场景: 我在考虑switch,但并没有太大的区别,我还需要根据某些参数在doA()内返回一个布尔值。 提前谢谢。