0Pricing
Swift Academy · レッスン

コレクションに対するジェネリックアルゴリズム

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ジェネリック関数とジェネリック型
  2. 制約(where)と型推論
  3. コレクションに対するジェネリックアルゴリズム
← Swift Academyに戻る