0
点赞
收藏
分享

微信扫一扫

rust 语句与表达式

青鸾惊鸿 2024-03-16 阅读 24

语句与表达式 示例 fn main() {

   let x = 5u32;

   let y = {

       let x_squared = x * x;

       let x_cube = x_squared * x;

// 下面表达式的值将被赋给 `y`

       x_cube + x_squared + x

   };

let z = {

// 分号让表达式变成了语句,因此返回的不再是表达式 `2*x` 的值,而是语句的值 `()` 2 * x;

};

   println!("x is {:?}", x);

   println!("y is {:?}", y);

   println!("z is {:?}", z);

} 练习

1.

🌟🌟

 // 使用两种方法让代码工作起来 fn main() {

  let v = {

      let mut x = 1;

x += 2 };

  assert_eq!(v, 3);

}

2.

 fn main() {

  let v = (let x = 3);

  assert!(v == 3);

}

3.

 fn main() {

   let s = sum(1 , 2);

   assert_eq!(s, 3);

}

fn sum(x: i32, y: i32) -> i32 {

   x + y;

}

 你可以在这里找到答案(在 solutions 路径下)

🌟

🌟


函数

1.

 fn main() {

// 不要修改下面两行代码! let (x, y) = (1, 2); let s = sum(x, y);

   assert_eq!(s, 3);

}

fn sum(x, y: i32) {

   x + y;

}

2.

 fn main() {

  print();

}

// 使用另一个类型来替代 i32 fn print() -> i32 {

  println!("hello,world");

}

3.

🌟🌟🌟

🌟🌟

🌟🌟🌟


 // 用两种方法求解 fn main() {

   never_return();

}

fn never_return() -> ! {

// 实现这个函数,不要修改函数签名!

}

4.

发散函数( Diverging function )不会返回任何值,因此它们可以用于替代需要返回任何值的地

🌟🌟


fn main() {

   println!("Success!");

}

fn get_option(tp: u8) -> Option<i32> {

   match tp {

1 => {

// TODO

}

_ => {

// TODO

}

};

// 这里与其返回一个 None,不如使用发散函数替代

   never_return_fn()

}

// 使用三种方法实现以下发散函数 fn never_return_fn() -> ! {

}

5.

举报

相关推荐

0 条评论