メインコンテンツにスキップ
モジュール 2 · レッスン 1 / 2コース内の 3/14~12 min
モジュールのレッスン (1/2)

条件文とループ

Rust の制御フローは、どの実行パスを選択するかを決定する条件式と、命令を繰り返すループ構成という 2 つの主要な構成を中心に展開します。

条件: 式としての if

Rustでは、ifステートメントは式であり、値を返すことを意味します。 if を使用して、値を変数に直接割り当てることができます。

Rust
let condition = true;
let number = if condition { 5 } else { 6 }; // if/else as an expression

ループと反復

Rust は、loop、while、for の 3 種類のネイティブ ループを提供します。

1. loop (無限ループ)

loop キーワードは、break の使用を停止するように明示的に指示するまで継続する無限ループを作成します。

Rust
let mut count = 0;
loop {
    count += 1;
    if count == 10 {
        break; // Exit the loop
    }
}

さらに、loop を break の直後に置くことで、その値を返すことができます。

Rust
let result = loop {
    count += 1;
    if count == 10 {
        break count * 2; // Returns 20
    }
};

2. while (条件ループ)

ブール条件が true である限り、コードのブロックを実行します。

Rust
let mut number = 3;
while number != 0 {
    println!("{}!", number);
    number -= 1;
}

3. for (コレクションと範囲の反復)

for ループは、コレクション内の要素または数値範囲を反復処理するための最も一般的で安全なツールです。

Rust
// Iterates over numbers 1 through 3 (excluding 4)
for number in 1..4 {
    println!("Valore: {}", number);
}

// Iterates including the right boundary using '='
for number in 1..=3 {
    println!("Valore: {}", number); // Prints 1, 2 and 3
}

ループラベル

ネストされたループを処理する場合、break ステートメントと continue ステートメントはデフォルトで最も内側のループに適用されます。 Rust では、ループ ラベル ('label_name: として記述) を使用して、外側のループを明示的に終了または継続することができます。

Rust
let mut count = 0;
'outer: loop {
    loop {
        if count == 5 {
            break 'outer; // Exits the outer loop directly
        }
        count += 1;
    }
}

自分で試してみてください

運動#rust.m2.l1.e1
試行回数: 0読み込み中…

値 7 を持つ number という名前の変数を宣言します。次に、if/else 式を使用して、number が 5 より大きい場合は変数 message に値「より大きい」を割り当て、それ以外の場合は値「より小さい」を割り当てます。最後に、println! を使用してメッセージを出力します。

エディターを読み込み中…
ヒントを表示

`let message = if number > 5 { 'greater' } else { 'smaller' };` と書き、それを `println!` に渡します。

3 回の試行後に解決策が利用可能になります

運動#rust.m2.l1.e2
試行回数: 0読み込み中…

println を使用して、1 から 5 までの数値 (つまり 1、2、3、4、5) を出力する for ループを作成します。各反復で。

エディターを読み込み中…
ヒントを表示

包含範囲構文 `for i in 1..=5` を使用し、ブロック内で `println!('{}', i);` を実行します。

3 回の試行後に解決策が利用可能になります

運動#rust.m2.l1.e3
試行回数: 0読み込み中…

可変変数カウンターを 0 からインクリメントするループを作成します。カウンターが 10 に達したら、break ステートメントを使用してカウンターを 5 倍にしてループを終了し、この値を不変変数の結果に割り当てます。最後に結果を印刷します。

エディターを読み込み中…
ヒントを表示

「let result =loop { ... };」を使用します。ループ内で `counter` をインクリメントし、条件 `if counter == 10 { Break counter * 5; を追加します。 }`。

3 回の試行後に解決策が利用可能になります