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 } }
-
函数的最后一个表达式:
- 在
if
表达式中,price - 10
和price - 3
是返回的值。 - 整个
if
表达式的结果会作为sale_price
函数的最后一个表达式。 - 由于 Rust 函数允许省略最后一个表达式的
return
关键字,sale_price
函数会将if
表达式的值作为返回值。
- 在
-
Rust 的表达式驱动:
- Rust 是一种表达式驱动的语言,
if
是一个表达式,而不是像某些语言中的语句。 if
表达式返回的值取决于满足条件的分支中的最后一个表达式的值。
- Rust 是一种表达式驱动的语言,
-
没有分号意味着返回值:
- 如果在
if
表达式的分支中添加分号,Rust 会将其视为语句,而不是表达式。这种情况下,你必须显式地使用return
来返回值。 - 例如:
上述代码会导致编译错误,因为if is_even(price) { price - 10; // 注意分号 } else { price - 3; // 注意分号 } if
表达式没有返回值。
- 如果在
总结
- 在 Rust 中,函数体的最后一个表达式会自动作为函数的返回值。
- 没有分号的表达式会隐式返回值。
- 如果你想显式返回值,可以使用
return
关键字。 - 虽然rust可以省略return,使用表达式驱动返回值,但是使用return也是完全没问题的!
这就是rust的return设计哲学。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】