// dictionary
関数.
関数(Function)は、fnキーワードで一連の処理に名前を付け、再利用できるようにする仕組みです。引数には型注釈が必須で、変数と違って型推論には頼れません。戻り値の型は->の後に書き、省略するとユニット型を返す扱いになります。
本体はブロックで、末尾にセミコロンを付けない式がそのまま戻り値になります(途中で抜けるときはreturnを使います)。末尾にセミコロンを付けると値を返さない文になるため、戻り値の型が()以外の場合は型が合わずコンパイルエラーになる点に注意が必要です。
// 税込価格を計算する関数。末尾の式が戻り値になります
fn with_tax(price: u32, tax_rate: f32) -> u32 {
price + (price as f32 * tax_rate) as u32
}
fn main() {
let total = with_tax(1200, 0.1);
println!("税込: {total}円");
}Playgroundで開く定義の構成要素
| 要素 | 記法 | 備考 |
|---|---|---|
| 関数名 | with_tax |
snake_caseが慣習(外れると警告) |
| 引数 | price: u32 |
型注釈は必須 カンマ ,区切りで複数指定可能 |
| 戻り値の型 | -> u32 |
省略時はユニット型()が返却される複数指定不可 複数のデータを返したい場合はタプル型などを利用する |
| 本体 | { ... } |
末尾の式が戻りになる値 |
補足
関数はアイテム — 定義の順序が自由
関数は「アイテム」と呼ばれる宣言の一種で、呼び出し箇所より後ろに定義しても使えます。また、関数の中に別の関数を定義することもできます(その場合、内側の関数が見えるのは定義したブロック内だけです)。
関数のバリエーション
fnの前に修飾子を付けたconst fn(コンパイル時に評価可能)・async fn(非同期)・unsafe fn(呼び出しにunsafeが必要)・extern fn(他言語とのABI指定)といったバリエーションがあります。また、関数名は同じシグネチャの関数ポインタ型fn(u32) -> u32へ型強制されるため、関数ポインタの値として他の関数に渡せます。名前を付けずにその場で定義する類似の仕組みとしてクロージャがあります。
この辞書が使われているページ
backlinks 23
- 辞書let-else文
- 辞書loop式
- 辞書pub
- 辞書Result型
- 辞書return式
- 辞書super
- 辞書use宣言
- 辞書クレート
- 辞書コンソール出力
- 辞書タプル構造体
- 辞書ムーブ
- 辞書モジュール
- 辞書ユニット様構造体
- 辞書構造体
- 辞書再エクスポート
- 辞書所有権
- 本動かして学ぶRustプログラミング問題集 › 第12章 OptionとResult
- 本動かして学ぶRustプログラミング問題集 › 第4章 関数
- 本動かして学ぶRustプログラミング問題集 › 第5章 タプルと配列・スライス
- 本動かして学ぶRustプログラミング問題集 › 第6章 文字列とベクタ
- 本動かして学ぶRustプログラミング問題集 › 第7章 所有権とムーブ
- 本動かして学ぶRustプログラミング問題集 › 第8章 参照と借用
- 本動かして学ぶRustプログラミング問題集 › 第9章 構造体