< 返回版块
hanyuling
发表于 2020-12-08 11:53
Tags:语法
我有以下疑问,希望能得到各位大佬的解答:
fn another_function() -> i32 {
5 //表达式
}
fn another_function() -> i32 {
return 5 //表达式?
}
fn another_function() -> i32 {
return 5; //语句?
}
上面的判断是否正确?正确的话,语句不是没有返回值的嘛,为什么 return 5; 是有返回值的
评论区
写评论https://doc.rust-lang.org/stable/reference/expressions/return-expr.html?highlight=return#return-expressions
https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=b583ce822528fb4ac7198af9d070135b
return表达式的返回值是个never type,看报错。
你的理解是正确的, 表达式有值, 而语句没有值.
是表达式, 其值为 5.
是语句, 其值为 (), 但是这个语句有个副作用, 是让函数返回 5. 你看到的 5 是函数的返回值, 而不是本身语句的值.