02. rust基础-function

return-返回的使用

这里只讲我遇到的一些function使用和其他语言的区别

fn is_even(num: i64) -> bool {
num % 2 == 0
}
fn sale_price(price: i64) -> i64 {
if is_even(price) {
price - 10
} else {
price - 3
}
}
fn main() {
let original_price = 52;
println!("Your sale price is {}", sale_price(original_price));

我们可以看到,这里没有return语句,但是它隐藏在一段代码的使用中,下面单另挑出来看:
在 Rust 中,函数体的最后一个表达式的值会被当作函数的返回值,这就是为什么 sale_price 函数能够返回值而没有显式使用 return 关键字的原因。

具体解释

fn sale_price(price: i64) -> i64 {
if is_even(price) {
price - 10
} else {
price - 3
}
}
  1. 函数的最后一个表达式

    • if 表达式中,price - 10price - 3 是返回的值。
    • 整个 if 表达式的结果会作为 sale_price 函数的最后一个表达式。
    • 由于 Rust 函数允许省略最后一个表达式的 return 关键字,sale_price 函数会将 if 表达式的值作为返回值。
  2. Rust 的表达式驱动

    • Rust 是一种表达式驱动的语言,if 是一个表达式,而不是像某些语言中的语句。
    • if 表达式返回的值取决于满足条件的分支中的最后一个表达式的值。
  3. 没有分号意味着返回值

    • 如果在 if 表达式的分支中添加分号,Rust 会将其视为语句,而不是表达式。这种情况下,你必须显式地使用 return 来返回值。
    • 例如:
      if is_even(price) {
      price - 10; // 注意分号
      } else {
      price - 3; // 注意分号
      }
      上述代码会导致编译错误,因为 if 表达式没有返回值。

总结

  • 在 Rust 中,函数体的最后一个表达式会自动作为函数的返回值。
  • 没有分号的表达式会隐式返回值。
  • 如果你想显式返回值,可以使用 return 关键字。
  • 虽然rust可以省略return,使用表达式驱动返回值,但是使用return也是完全没问题的!

这就是rust的return设计哲学。

posted @   代码世界faq  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示