Progrust Library.

// 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

  1. 辞書let-else文
  2. 辞書loop式
  3. 辞書pub
  4. 辞書Result型
  5. 辞書return式
  6. 辞書super
  7. 辞書use宣言
  8. 辞書クレート
  9. 辞書コンソール出力
  10. 辞書タプル構造体
  11. 辞書ムーブ
  12. 辞書モジュール
  13. 辞書ユニット様構造体
  14. 辞書構造体
  15. 辞書再エクスポート
  16. 辞書所有権
  17. 動かして学ぶRustプログラミング問題集 › 第12章 OptionとResult
  18. 動かして学ぶRustプログラミング問題集 › 第4章 関数
  19. 動かして学ぶRustプログラミング問題集 › 第5章 タプルと配列・スライス
  20. 動かして学ぶRustプログラミング問題集 › 第6章 文字列とベクタ
  21. 動かして学ぶRustプログラミング問題集 › 第7章 所有権とムーブ
  22. 動かして学ぶRustプログラミング問題集 › 第8章 参照と借用
  23. 動かして学ぶRustプログラミング問題集 › 第9章 構造体