函数

函数(function)使用 fn 关键字来声明。函数的参数需要标注类型,就和变量一样,另外如果函数返回一个值,返回类型必须在箭头 -> 之后指定。

函数最后的表达式将作为返回值。也可在函数内使用 return 语句来提前返回值。return甚至也可在循环或 if 内部使用。

让我们使用函数来重写 FizzBuzz 程序吧!

  1. // 和 C/C++ 不一样,Rust 的函数定义位置是没有限制的
  2. fn main() {
  3. // 我们可以在这里使用函数,后面再定义它
  4. fizzbuzz_to(100);
  5. }
  6. // 一个返回布尔值的函数
  7. fn is_divisible_by(lhs: u32, rhs: u32) -> bool {
  8. // 边界情况,提前返回
  9. if rhs == 0 {
  10. return false;
  11. }
  12. // 这是一个表达式,这里可以不用 `return` 关键字
  13. lhs % rhs == 0
  14. }
  15. // 一个 “不” 返回值的函数。实际上会返回一个单元类型 `()`。
  16. fn fizzbuzz(n: u32) -> () {
  17. if is_divisible_by(n, 15) {
  18. println!("fizzbuzz");
  19. } else if is_divisible_by(n, 3) {
  20. println!("fizz");
  21. } else if is_divisible_by(n, 5) {
  22. println!("buzz");
  23. } else {
  24. println!("{}", n);
  25. }
  26. }
  27. // 当函数返回 `()` 时,函数签名可以省略返回类型
  28. fn fizzbuzz_to(n: u32) {
  29. for n in 1..n + 1 {
  30. fizzbuzz(n);
  31. }
  32. }