Map/Filter/Reduceとlazyシーケンス
map / filter / reduce で変換、選択、結合を行い、さらに .lazy を加えて処理を遅延させ、中間配列を避けます。
「Map/Filter/Reduceとlazyシーケンス」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン2/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全3レッスンが含まれています。
基本概念
基本的なアルゴリズム:
- map: 各要素を変換します
- filter: 条件に一致する要素を残します
- reduce: 1つの値にまとめます
- .lazy: 一時配列を避けるために処理を遅延します
map
mapは各要素を変換し、新しい配列を返します。
let nums = [1, 2, 3]
let doubled = nums.map { $0 * 2 } // [2, 4, 6]
print(doubled)
let words = ["swift", "kit"]
let upper = words.map { $0.uppercased() } // ["SWIFT","KIT"]
print(upper)filter
filterは、条件がtrueを返す要素を残します。
let scores = [45, 72, 88, 53]
let passing = scores.filter { $0 >= 60 } // [72, 88]
print(passing)
let names = ["Ana","Li","Max"]
let short = names.filter { $0.count <= 2 } // ["Li"]
print(short)reduce
reduceは、開始値と結合クロージャを使ってシーケンスを1つの結果に畳み込みます。
let total = [1,2,3,4].reduce(0) { acc, x in acc + x } // 10
print(total)
let joined = ["a","b","c"].reduce("") { $0 + $1 } // "abc"
print(joined)遅延オンデマンド処理
.lazyは遅延パイプラインを構築します。操作は要素を消費するときに実行されます(例: prefix、first、または反復によって実行されます)。
let range = 1...10
let lazyPipeline = range.lazy
.map { x in print("map", x); return x * x }
.filter { x in print("filter", x); return x % 2 == 0 }
// Only the first 3 results are needed:
let firstThree = Array(lazyPipeline.prefix(3))
print("result:", firstThree)
// Notice how only the work needed for 3 elements ran.ヒント
ヒント:
- 明確なデータフローになるよう、map → filter → reduceの順に連結します。
- パイプラインの一部だけを消費する場合や一時配列を避けたい場合は.lazyを追加します。
- 具体的な配列が必要な場合にのみ、
Array(...)で実体化します。
lazyの動作
理解度チェック: map/filterチェーンに.lazyを付けるとどうなりますか?
まとめ
まとめ: 変換にはmap、選択にはfilter、結合にはreduceを使います。オンデマンド評価と割り当ての削減には.lazyを追加します。
よくある質問
「Map/Filter/Reduceとlazyシーケンス」レッスンは無料ですか?
はい。「Map/Filter/Reduceとlazyシーケンス」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全3レッスンが含まれています。
「Map/Filter/Reduceとlazyシーケンス」で何を学びますか?
map / filter / reduce で変換、選択、結合を行い、さらに .lazy を加えて処理を遅延させ、中間配列を避けます。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Swift Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/3です。
「Map/Filter/Reduceとlazyシーケンス」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSwift Academyレッスンでコードを書いて実行できますか?
はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- SequenceとCollectionの階層
- Map/Filter/Reduceとlazyシーケンス
- カスタムイテレーターとパフォーマンスのヒント