Progrust Library.

// dictionary

文.

文(Statement)は、値を生成せずに宣言や動作の実行だけを行うコードの単位です。値を生成する式と対になる概念で、Rustの文はletで変数などの名前を導入する宣言文と、式を評価して結果の値を捨てる式文(多くは式の末尾にセミコロン;を付けた形)の2種類に大別されます1。

fn main() {
    let price = 1000;            // 宣言文: 右辺を評価して名前に束縛する(文自体は値を生成しない)
    println!("価格: {price}円"); // 式文: 式を評価し、結果の値は捨てる
}
Playgroundで開く

文の2分類

種類 例 役割
宣言文 let price = 1000;、ブロック内のfnやstructの定義 名前を導入する
式文 println!("...");、calc(); 式を評価し、結果の値を捨てる

セミコロンの働き

関数本体の末尾では、セミコロンの有無が「値を返す式」か「値を捨てる文」かの分かれ目になります。

セミコロンを付けると型エラーになる例
// エラー: E0308(セミコロンで値が捨てられ、戻り値が () になる)
fn add_tax(price: i32) -> i32 {
    price * 110 / 100; // このセミコロンを削除すれば値が返る
}

補足

ブロックで終わる式はセミコロンを省略できる

if・match・loop式・for式などブロックで終わる式を文の位置に置く場合は、セミコロンを付けずにそのまま文として扱えます(この場合、式の型は()である必要があります)。普段forループの後ろにセミコロンを書かないのはこのルールによるものです。

Footnotes

  1. The Rust Reference: Statements ↩

この辞書が使われているページ

backlinks 11

  1. 辞書if式
  2. 辞書let-else文
  3. 辞書コメント
  4. 辞書スコープ
  5. 辞書マクロ
  6. 辞書ユニット型
  7. 辞書関数
  8. 辞書式
  9. 本動かして学ぶRustプログラミング問題集 › 第1章 コンソール出力と変数
  10. 本動かして学ぶRustプログラミング問題集 › 第3章 制御フロー
  11. 本動かして学ぶRustプログラミング問題集 › 第4章 関数