拡張 for ループ
CoddyのRustジャーニー「Fundamentals」セクションの一部 — レッスン 66/75。
配列を反復処理する方法はいくつかあります。以下にその一部を紹介します:
以下の配列を考えてみましょう:
let numbers = [1, 2, 3, 4, 5];直接イテレータ:
for num in numbers.iter() {} // 値: 1, 2, 3, 4, 5
インデックスと値:
for (index, value) in numbers.iter().enumerate() { } // 値: (0,1), (1,2), (2,3), (3,4), (4,5)
特定のサイズのスライス:
for chunk in numbers.chunks(2) { } // 値: [1,2], [3,4], [5]
ミューテーションを伴う反復処理:
for num in numbers.iter_mut() { *num *= 2; } // 配列は次のようになります: [2, 4, 6, 8, 10]
チャレンジ
簡単アイテムとその価格が含まれるショッピングリストを処理し、データのさまざまなビューを提供するプログラムを作成してください。
プログラムは以下を行う必要があります:
- 各アイテムの番号と価格を印刷する(enumerate を使用)
- 価格をペアで(chunks を使用)"bundle deals" として印刷する
- すべての価格に10%の割引を適用する(iter_mut を使用)
- 最終的な割引後の価格を印刷する
チートシート
Rustで配列を反復処理するさまざまな方法:
直接イテレータ:
for num in numbers.iter() {}
// 値: 1, 2, 3, 4, 5enumerateを使用したインデックスと値:
for (index, value) in numbers.iter().enumerate() { }
// 値: (0,1), (1,2), (2,3), (3,4), (4,5)chunksを使用した特定のサイズのスライス:
for chunk in numbers.chunks(2) { }
// 値: [1,2], [3,4], [5]iter_mutを使用したミューテーションを伴う反復処理:
for num in numbers.iter_mut() {
*num *= 2;
}
// 配列の状態: [2, 4, 6, 8, 10]自分で試してみよう
fn main() {
let mut prices = [2.75, 1.50, 5.00, 3.5, 4.1, 2.25, 7.9];
println!("Original Prices:");
// TODO: enumerate を使用して、各アイテムの番号と価格を表示してください
// 期待される出力: "Item 1: $2.99" など
println!("\nBundle Deals:");
// TODO: chunks を使用して、価格のペアとその合計を表示してください
// 期待される出力: "Bundle 1: $2.99 + $1.50 = $4.49" など
// TODO: iter_mut を使用して、すべての価格に10%の割引を適用してください
println!("\nPrices after 10% discount:");
// TODO: 割引後の最終的な価格を表示してください
// 期待される出力: "$2.69" など
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。