【问题标题】:Why don't we add a semicolon (;) at the end of if/else?为什么不在 if/else 的末尾添加分号 (;)?
【发布时间】:2014-12-27 15:19:14
【问题描述】:

在 Rust 中,我注意到除了 2 种语句之外,一切都是表达式。每个添加; 的表达式都将成为一个语句。 Rust 的语法希望语句跟在其他语句之后。

那么我们为什么不在if/else“表达式”的末尾添加;?这也是一个表达式,所以我们为什么不这样做:

if true {
    println!("true");
} else {
    println!("false");
};

【问题讨论】:

  • 我不知道你是否会得到关于为什么 Rust 允许这样做的任何清晰、简洁的答案。它可能只是“因为它看起来更好”或“其他类似语言就是这样做的”。对于它的价值,你可以;放在那里,当我在一行中使用if/else作为三元语句时,我就有了。
  • 如果ifwhilematch 表达式是语句的“根”表达式,则可以省略分号。
  • 在reddit上广泛讨论reddit.com/r/rust/comments/2qjvzr/…
  • @dbaupp reddit 帖子是我的。在我在这里发布我的问题之后,似乎很少有人注意到它。事实上,如果你对我的问题进行越来越多的实验,你会发现它比它应该的“外观”非常混乱。
  • 我不知道为什么这个问题收到了反对票和 4 票。这是一个很好的问题,reddit 上的回答也很好很有趣。

标签: if-statement syntax rust expression


【解决方案1】:

discussion 中最常见的答案是它看起来更像来自其他语言的用户所期望的,并且允许该语法没有害处(因为结果类型是 (),这要归功于分支中的分号)。

【讨论】:

    【解决方案2】:

    我猜是因为它是 Java 或 Nginx-Conf 等其他语言中的块表达式,所以分号只设置在语句之后而不是块之后。

    【讨论】:

      猜你喜欢
      • 2011-12-25
      • 2012-12-16
      • 2019-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      相关资源
      最近更新 更多