はじめに
この実験では、Rust で関数を書く方法を学びます。関数は fn キーワードを使って宣言され、その引数には型注釈が付けられます。返却型が必要な場合は、矢印 -> の後に指定します。関数内の最後の式が返却値となりますが、return 文を使ってより早く値を返すこともできます。この実験では、関数を使って FizzBuzz プログラムを書き直す例を示し、ブール値を返す関数、単位型 () を返す関数、および返却型が指定されていない関数の使い方を示します。
注: 実験でファイル名が指定されていない場合は、好きなファイル名を使うことができます。たとえば、
main.rsを使って、rustc main.rs &&./mainでコンパイルして実行することができます。
関数
関数は fn キーワードを使って宣言されます。その引数には、変数と同じように型注釈が付けられ、関数が値を返す場合、返却型は矢印 -> の後に指定する必要があります。
関数内の最後の式が返却値として使われます。あるいは、return 文を使って、関数内のループや if 文の中からでも、より早く値を返すことができます。
関数を使って FizzBuzz を書き直してみましょう!
// C/C++ とは異なり、関数定義の順序に制限はありません
fn main() {
// ここでこの関数を使うことができ、後で定義することもできます
fizzbuzz_to(100);
}
// ブール値を返す関数
fn is_divisible_by(lhs: u32, rhs: u32) -> bool {
// 端数ケース、早期返却
if rhs == 0 {
return false;
}
// これは式であり、ここでは `return` キーワードは必要ありません
lhs % rhs == 0
}
// 値を返さない関数は、実際には単位型 `()` を返します
fn fizzbuzz(n: u32) -> () {
if is_divisible_by(n, 15) {
println!("fizzbuzz");
} else if is_divisible_by(n, 3) {
println!("fizz");
} else if is_divisible_by(n, 5) {
println!("buzz");
} else {
println!("{}", n);
}
}
// 関数が `()` を返す場合、シグネチャから返却型を省略できます
fn fizzbuzz_to(n: u32) {
for n in 1..=n {
fizzbuzz(n);
}
}
まとめ
おめでとうございます!関数の実験を完了しました。LabEx でさらに多くの実験を行って、技術力を向上させましょう。