函式

這是知名面試問題 FizzBuzz 的 Rust 版本:

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 中參照以下所寫的函式。不需前向宣告,也不需標頭。
  • 宣告參數後面接有型別 (與某些程式設計語言相反),然後才是傳回型別。
  • 函式主體 (或任何區塊) 中的最後一個運算式會成為回傳值。您只要省略運算式結尾的 ; 即可。
  • 某些函式沒有回傳值,會傳回 () 這個「單位型別」。如果省略 -> () 傳回型別,編譯器則會推斷出這點。
  • print_fizzbuzz_to()for 迴圈的範圍運算式含有 =n,因此會包含上限值。