ジェネリック関数とジェネリック型
型パラメーター(例: )を使ってジェネリック関数とジェネリック型を記述します。コンパイラーによる型推論と、安全で再利用可能なコードの仕組みを学びます。
「ジェネリック関数とジェネリック型」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン1/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全3レッスンが含まれています。
なぜジェネリクスなのか
ジェネリクスを使うと、型安全性を保ちながら多くの型で動作する1つの関数や型を書けます。<T>による型パラメーターと、推論によって呼び出しが簡単になる仕組みを見ていきます。
ジェネリック関数
ジェネリック関数は型パラメーター(<T>)を使います。コンパイラーは呼び出しごとに型をチェックします。
// Generic swap for any type T
func swapValues<T>(_ a: inout T, _ b: inout T) {
let temp = a
a = b
b = temp
}
var x = 1, y = 2
swapValues(&x, &y)
print(x, y) // 2 1
var s1 = "A", s2 = "B"
swapValues(&s1, &s2)
print(s1, s2) // B Aジェネリック型
型もジェネリックにできます。Stack<Element>を宣言し、IntやStringなどで再利用します。
// A minimal generic stack
struct Stack<Element> {
private var items: [Element] = []
mutating func push(_ x: Element) { items.append(x) }
mutating func pop() -> Element? { items.popLast() }
var top: Element? { items.last }
}
var intStack = Stack<Int>()
intStack.push(10); intStack.push(20)
print(intStack.top ?? -1) // 20
var textStack = Stack<String>()
textStack.push("hi"); textStack.push("bye")
print(textStack.pop() ?? "?")型推論
Swiftはジェネリック型を推論することが多いため、呼び出し時に明示的に指定することはほとんどありません。
// The compiler infers T from arguments/assignments
func makePair<T>(_ a: T, _ b: T) -> (T, T) { (a, b) }
let pair1 = makePair(1, 2) // T inferred as Int
let pair2 = makePair("a", "b") // T inferred as String
print(pair1, pair2)重複を避ける
ジェネリクスがないと、型ごとにコードを繰り返す必要があります。ジェネリクスは静的チェックを維持しながら重複をなくします。
// Non-generic overloads would duplicate logic:
func eqInt(_ a: Int, _ b: Int) -> Bool { a == b }
func eqStr(_ a: String, _ b: String) -> Bool { a == b }
// A single generic can replace both:注意点と命名
注意点:
- 明確な名前を使います。T、Element、またはドメインに応じた名前が適しています。
- APIは小さく、目的を絞ります。
- 次は、必要に応じてwhereで制約を追加し、Tを制限します。
<T>の意味
確認:ジェネリック関数における<T>は何を意味するのでしょうか。
まとめ
まとめ:<T>を使ってジェネリック関数を定義し、Stack<Element>のようなジェネリック型を作成します。Swiftは呼び出し時に型を推論するため、コードを再利用しながら安全性を保てます。
よくある質問
「ジェネリック関数とジェネリック型」レッスンは無料ですか?
はい。「ジェネリック関数とジェネリック型」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全3レッスンが含まれています。
「ジェネリック関数とジェネリック型」で何を学びますか?
型パラメーター(例: )を使ってジェネリック関数とジェネリック型を記述します。コンパイラーによる型推論と、安全で再利用可能なコードの仕組みを学びます。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Swift Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/3です。
「ジェネリック関数とジェネリック型」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSwift Academyレッスンでコードを書いて実行できますか?
はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ジェネリック関数とジェネリック型
- 制約(where)と型推論
- コレクションに対するジェネリックアルゴリズム