我不是机密人员,但来自Statements and expressions:
我们实际上已经使用过语句和表达式。语句是执行某些操作且不返回值的指令。表达式的计算结果为结果值。让我们看一些例子。
......
表达式不包括结尾分号。如果在表达式的末尾添加分号,则将其变成一条语句,然后该语句将不返回值。在接下来探索函数返回值和表达式时,请记住这一点。
对于return 5;
,它是语句还是表达式?如果是语句,则语句不应返回值;如果它是一个表达式,则表达式不应以分号结尾。
答案 0 :(得分:7)
那里的措词不准确。当它说“一条语句...将不返回值”时,表示该语句不是通过将其评估为最终值(如表达式)来处理的,而是通过执行该语句来处理的。对于return
语句,执行采用退出当前函数的形式,将返回值传递给调用函数。
return 5;
无疑是一个声明。
答案 1 :(得分:2)
您可以通过Rust宏进行查找:
macro_rules! expr_or_stmt {
($_:expr) => {
"expr"
};
($_:stmt) => {
"stmt"
};
}
fn main() {
dbg!(expr_or_stmt!(return 5));
}
它会显示“ expr”,如您在playground上所见。