函数

一个 Rust 版本的著名 FizzBuzz 面试题:

fn main() {
    print_fizzbuzz_to(20);
}

fn is_divisible(n: u32, divisor: u32) -> bool {
    if divisor == 0 {
        return false;
    }
    n % divisor == 0
}

fn fizzbuzz(n: u32) -> String {
    let fizz = if is_divisible(n, 3) { "fizz" } else { "" };
    let buzz = if is_divisible(n, 5) { "buzz" } else { "" };
    if fizz.is_empty() && buzz.is_empty() {
        return format!("{n}");
    }
    format!("{fizz}{buzz}")
}

fn print_fizzbuzz_to(n: u32) {
    for i in 1..=n {
        println!("{}", fizzbuzz(i));
    }
}
  • 我们在 main 中引用了下面编写的一个函数。不需要提前声明或添加头文件。
  • 类型跟随在声明的参数后(与某些编程语言相反),然后是返回类型。
  • 函数体(或任何块)中的最后一个表达式将成为返回值。只需省略表达式末尾的 ; 即可。
  • 有些函数没有返回值,会返回“单元类型(unit type)”()。如果省略了-> ()的返回类型,编译器将会自动推断。
  • print_fizzbuzz_to()函数中for循环的范围表达式(range expression)包含=n,这会导致它包括上限。