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设计哲学。

浙公网安备 33010602011771号