// Copyright 2023 Google LLC
// SPDX-License-Identifier: Apache-2.0
fn gcd(a: u32, b: u32) -> u32 {
if b > 0 { gcd(b, a % b) } else { a }
}
fn main() {
dbg!(gcd(143, 52));
}
- 宣言では、パラメータの後に型を書き(一部のプログラミング言語とは逆)、次に戻り値の型を書きます。
- 関数本体(または任意のブロック)の最後の式が戻り値になります。式の末尾の
; を省略するだけです。早期リターンには return キーワードを使用できますが、関数の末尾では「値だけを書く」形式が慣用的です(gcd を return を使うようにリファクタリングしてみてください)。
- 一部の関数には戻り値がなく、「ユニット型」である
() を返します。戻り値の型を省略した場合、コンパイラがこれを推論します。
- オーバーロードはサポートされていません – 各関数に実装は 1 つだけです。
- 常に固定個数のパラメータを取ります。デフォルト引数はサポートされていません。可変長関数をサポートするためにマクロを使うことはできます。
- 常に 1 組のパラメータ型だけを取ります。これらの型はジェネリックにすることができ、これについては後で扱います。