If statement 为什么不';我们不在if/else的末尾加一个分号(;)吗?

If statement 为什么不';我们不在if/else的末尾加一个分号(;)吗?,if-statement,syntax,rust,expression,If Statement,Syntax,Rust,Expression,在《铁锈》中,我注意到除了两种陈述之外,一切都是一种表达。添加的每个表达式将成为一条语句。Rust的语法要求语句跟随其他语句 那么我们为什么不添加在if/else表达式的末尾?这也是一个表达式,我们为什么不这样做: if true { println!("true"); } else { println!("false"); }; 中最常见的答案是,它看起来更像来自其他语言的用户所期望的,并且允许这种语法也没有什么害处(因为分支中的分号导致结果类型是()).我猜是因为它是Jav

在《铁锈》中,我注意到除了两种陈述之外,一切都是一种表达。添加
的每个表达式将成为一条语句。Rust的语法要求语句跟随其他语句

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

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

中最常见的答案是,它看起来更像来自其他语言的用户所期望的,并且允许这种语法也没有什么害处(因为分支中的分号导致结果类型是
()
).

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

我不知道您是否能得到任何清晰、简洁的答案,解释Rust为什么允许这样做。它可能只是“因为它看起来更好”或“其他类似语言就是这样做的”。不管它值多少钱,你都可以把
在那里,当我使用
if
/
else
作为一行的三元语句时,我就有了。分号可以在
if
后面省略,而
或者
match
表达式,如果该表达式是语句的“根”表达式。在reddit@dbaupp上进行了广泛讨论reddit post是我的。在我把我的问题贴在这里之后,似乎很少有人关注它。事实上,如果你对我的问题进行越来越多的实验,你会发现它比它应该的“外观”更令人困惑。我不知道为什么这个问题会得到反对票和4张结束票。这是一个非常好的问题,reddit上的答案非常好而且有趣。