ループラベル
CoddyのRustジャーニー「Fundamentals」セクションの一部 — レッスン 42/75。
Rustにおけるラベルは、ループが入れ子になっている場合に、特定のループをbreakまたはcontinueするのに役立ちます。ループをラベル付けするには、ループの前に'label:を追加します。
例えば:
'outer: for i in 1..=3 {
'inner: for j in 1..=3 {
if i * j > 5 {
break 'outer;
// 外側のループを終了します
}
println!("({}, {})", i, j);
}
}
この例では、'outer と 'inner というラベルが付いた2つのネストされたループがあります。i と j の積が5より大きい場合、break 'outer; 文が実行され、外側のループを終了します。このコードの出力は次のようになります:
(1, 1)
(1, 2)
(1, 3)
(2, 1)
(2, 2)同様に、continue 'label; を使用して、指定されたループの次のイテレーションに継続することができます。例えば:
'outer: for i in 1..=3 {
'inner: for j in 1..=3 {
if i == j {
continue 'outer;
// これは外側のループを継続します
}
println!("({}, {})", i, j);
}
}この場合、i が j と等しいとき、continue 'outer; 文が実行され、内側のループの残りの部分をスキップして外側のループの次のイテレーションを継続します。出力は以下のようになります:
(2, 1)
(3, 1)
(3, 2)チャレンジ
初心者ラベル付きループを使用して、和が10より大きく、積が12の倍数(積が12で割り切れる)となる最初の数値のペア (i, j) を見つけるRustのプログラムを作成してください。プログラムは、i を1から20まで、j を1から20まで繰り返す必要があります。
ペアが見つかったら、それを (i, j) という形式で出力し、外側のループを抜けてください。
チートシート
Rustのラベルは、ループが入れ子になっている場合に、特定のループをbreakまたはcontinueするのに役立ちます。ループの前に'label:を追加してラベルを付けます。
break 'label;を使用して、特定のラベル付きループを終了します:
'outer: for i in 1..=3 {
'inner: for j in 1..=3 {
if i * j > 5 {
break 'outer; // 外側のループを終了します
}
println!("({}, {})", i, j);
}
}continue 'label;を使用して、特定のラベル付きループの次のイテレーションに継続します:
'outer: for i in 1..=3 {
'inner: for j in 1..=3 {
if i == j {
continue 'outer; // 外側のループを継続します
}
println!("({}, {})", i, j);
}
}自分で試してみよう
fn main() {
'outer: for i in 1..=20 {
for j in 1..=20 {
// Your logic here
break 'outer;
}
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。