参数与返回值类型标注
fn test(a: str, b: int) -> bool {}
这与例如python的类型标注是同款方式
表达式与语句
rust的表达式的后面不加;
,语句的后面才加。
1 + 5 + 3
{
let x = 3;
x + 1
}
这些都是表达式
函数的返回值,代码块的值
在rust中,最后一个表达式,代表着函数或者代码块的值,例如刚才提到的。
{
let x = 3;
x + 1
}
x + 1
是代码块中最后一个表达式,它即代表着这个代码块的值
fn main() {
let x = plus_one(5);
println!("The value of x is: {}", x);
}
fn plus_one(x: i32) -> i32 {
x + 1
}
在这个函数中,x+1
是plus_one()
的返回值。如果将其换成
fn plus_one(x: i32) -> i32 {
5
}
也是完全没有问题的。这相当于把其他语言中最后的return所省略了。
那么如果我们将其加上;
fn plus_one(x: i32) -> i32 {
x + 1;
}
那么就会出现报错,因为x+1;
是一个语句,不是表达式。所以这个函数没有返回值,但上面标注了-> i32
,所以会报错。
关于表达式和返回值这点,一定要注意。因为其和其他语言的特性不同。
网友评论