0Pricing
Learn Rust Coding · レッスン

式と文

最後の式

「式と文」はCoddyKit上の無料Learn Rust Codingレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn Rust Coding学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn Rust Codingコースには全4レッスンが含まれています。

文と式

Rustでは、コードを2種類に区別します。

  • 文は処理を実行しますが、値を返しません。
  • 式は評価されて値になります。

この違いが、関数から値を返す方法を形作ります。

fn main() {
    let x = 5;      // a let statement
    let y = x + 1;  // x + 1 is an expression
    println!("{}", y);
}

letは文

letによる束縛は文です。値を返さないため、let a = (let b = 6);のようには書けません。

fn main() {
    let a = 6;
    // let c = (let d = 6); // error: let is not an expression
    println!("{}", a);
}

式は値に評価される

算術演算、関数呼び出し、リテラルは、すべて値を生成するため式です。

  • 5
  • 2 + 3
  • square(4)
fn main() {
    let v = 2 + 3 * 4;
    println!("{}", v);
}

ブロックは式

ブロック{ ... }自体が式です。末尾にセミコロンがなければ、その値は内部にある最後の式の値になります。

fn main() {
    let y = {
        let x = 3;
        x + 1
    };
    println!("y is {}", y);
}

セミコロンが重要な理由

セミコロンを付けると、式は文になり、その値は破棄されます。

  • x + 1 — 式であり、値を生成します。
  • x + 1; — 文であり、()を生成します。
fn main() {
    let y = {
        let x = 3;
        x + 1   // no semicolon: this is the block's value
    };
    println!("{}", y);
}

最後の式が戻り値になる

関数では、セミコロンのない最後の式が戻り値になります。これはRustで一般的な書き方です。

fn main() {
    println!("{}", five());
}

fn five() -> i32 {
    5
}

セミコロンが戻り値を壊す

最後の行に誤ってセミコロンを付けると、関数は値の代わりに()を返します。これは初心者によくある間違いです。

fn main() {
    println!("{}", plus_one(10));
}

fn plus_one(n: i32) -> i32 {
    n + 1   // correct: no semicolon
}

式としてのif

ifは式なので、その結果を変数に代入できます。両方の分岐は同じ型を生成する必要があります。

fn main() {
    let condition = true;
    let number = if condition { 5 } else { 6 };
    println!("number is {}", number);
}

式としてのloop

loopはbreakを通じて値を返せます。breakの後に指定した値が、ループの結果になります。

fn main() {
    let mut counter = 0;
    let result = loop {
        counter += 1;
        if counter == 10 {
            break counter * 2;
        }
    };
    println!("result {}", result);
}

式としてのmatch

matchも式です。各アームが値を生成し、マッチしたアームの値が結果になります。

fn main() {
    let n = 2;
    let label = match n {
        1 => "one",
        2 => "two",
        _ => "many",
    };
    println!("{}", label);
}

すべてを組み合わせる

ブロックや制御フローを式として扱うことで、Rustのコードを簡潔にできます。計算と戻り値の返却を、1つの自然な手順で行えます。

fn main() {
    let score = 85;
    let grade = if score >= 90 { 'A' } else if score >= 80 { 'B' } else { 'C' };
    println!("grade {}", grade);
}

理解度チェック

式にセミコロンを付けると、どうなりますか。

まとめ

Rustの式と文:

  • 文(letなど)は処理を行いますが、値を返しません。
  • 式は評価されて値になります。
  • ブロック、if、match、loopは式です。
  • セミコロンのない最後の式が戻り値になります。
fn main() {
    let x = { let a = 2; a * a };
    let y = if x > 3 { "big" } else { "small" };
    println!("{} {}", x, y);
}

よくある質問

「式と文」レッスンは無料ですか?

はい。「式と文」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn Rust Codingコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn Rust Codingコースには全4レッスンが含まれています。

「式と文」で何を学びますか?

最後の式 ブラウザで直接実行するハンズオンコードでLearn Rust Codingを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Learn Rust Codingを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのLearn Rust Codingは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「式と文」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このLearn Rust Codingレッスンでコードを書いて実行できますか?

はい。すべてのLearn Rust Codingレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 関数の定義
  2. 式と文
  3. クロージャ
  4. Fn、FnMut、FnOnce
← Learn Rust Codingに戻る