练习题来自:https://practice-zh.course.rs/basic-types/statements-expressions.html
1
// 使用两种方法让代码工作起来
fn main() {
let v = {
let mut x = 1;
x += 2
};
assert_eq!(v, 3);
}
x+=3
是一个标准的表达式,可惜它返回的是()
,所以要么这里改为校验()
,要么改成返回x
(我猜这个才是作者的本意),这里以第二种为例。
fn main() {
let v = {
let mut x = 1;
x += 2;
x
};
assert_eq!(v, 3);
}
2
fn main() {
let v = (let x = 3);
assert!(v == 3);
}
let x = 3是一个语句,这里需要一个表达式。不过据说这种写法已经在支持中了?
fn main() {
let x = 3;
let v = x;
assert!(v == 3);
}
不过这种情况下所有权就转移了,x不再拥有3的所有权。
3
fn main() {
let s = sum(1 , 2);
assert_eq!(s, 3);
}
fn sum(x: i32, y: i32) -> i32 {
x + y;
}
加上分号就是语句了,去掉分号就是表达式。
fn main() {
let s = sum(1 , 2);
assert_eq!(s, 3);
}
fn sum(x: i32, y: i32) -> i32 {
x + y
}