コレクションに対するジェネリックアルゴリズム
map 、 filter 、 reduce などのジェネリックアルゴリズムを使って変換、選択、結合を行い、簡単な制約で Sequence に対する独自の関数を記述します。
「コレクションに対するジェネリックアルゴリズム」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン3/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全3レッスンが含まれています。
なぜジェネリックアルゴリズムなのか
SwiftはSequenceやCollectionに対して、map、filter、reduceという強力なジェネリックアルゴリズムを提供しています。独自のジェネリックヘルパーを書くこともできます。
map
mapはすべての要素に変換を適用し、新しい配列を返します。
let nums = [1, 2, 3]
let doubled = nums.map { $0 * 2 } // [2, 4, 6]
print(doubled)
let words = ["swift", "kit"]
let caps = words.map { $0.uppercased() } // ["SWIFT","KIT"]
print(caps)filter
filterは、述語を満たす要素を残します。
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 sum = [1,2,3,4].reduce(0) { acc, x in acc + x } // 10
print(sum)
let joined = ["a","b","c"].reduce("") { acc, s in acc + s } // "abc"
print(joined)カスタムジェネリック(Sequence)
入力をSequenceに制約し、そのElementを使うことで、独自のジェネリックアルゴリズムを作成できます。
// Works for any Sequence whose Element meets the predicate
func allMatch<S: Sequence>(_ seq: S, _ predicate: (S.Element) -> Bool) -> Bool {
for x in seq { if !predicate(x) { return false } }
return true
}
print(allMatch([2,4,6]) { $0 % 2 == 0 }) // true
print(allMatch(["ab","c"]) { $0.count >= 2 }) // falseヒントとパターン
ヒント:
- クロージャは明確にします。読みやすさが損なわれる場合はパラメーターに名前を付けます。
- パイプラインにはmap → filter → reduceの順に連結します。
- パフォーマンスのため、負荷の高い処理はホットループの外に置きます。
reduceの意味
確認:開始値を使ってシーケンスを1つの値にまとめる演算はどれでしょうか。
まとめ
まとめ:変換にはmap、選択にはfilter、結合にはreduceを使います。Sequenceに対する独自のジェネリックヘルパーを書くこともできます。
よくある質問
「コレクションに対するジェネリックアルゴリズム」レッスンは無料ですか?
はい。「コレクションに対するジェネリックアルゴリズム」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全3レッスンが含まれています。
「コレクションに対するジェネリックアルゴリズム」で何を学びますか?
map 、 filter 、 reduce などのジェネリックアルゴリズムを使って変換、選択、結合を行い、簡単な制約で Sequence に対する独自の関数を記述します。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Swift Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/3です。
「コレクションに対するジェネリックアルゴリズム」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSwift Academyレッスンでコードを書いて実行できますか?
はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ジェネリック関数とジェネリック型
- 制約(where)と型推論
- コレクションに対するジェネリックアルゴリズム