2020/1/11 Swift ジェネリック(Generics)

ジェネリックコードを使うと、自分で定義した要請に応じて、あらゆる型に対応する柔軟で再利用可能な関数と型を作り出すことができます。重複を避け、意図を明確に抽象化したコードを記述できます。

ジェネリックはSwiftのもっとも強力な機能の一つであり、Swift標準ライブラリの多くがジェネリックコードにより書かれています。実はもうすでに私たちはジェネリック型を使っています。

例えばSwiftの配列とディクショナリはどちらもジェネリック型のコレクションです。要素がInt型の配列、要素がString型の配列、または他の型の配列も生成することができます。同様に特定の型の要素を持つディクショナリを生成することもできます。要素の型について制限はありません。

ジェネリックが解決する問題

sample1-1は二つのInt型の値を交換する、標準的な非ジェネリック関数swapTwoInts(_:_:)です。

sample1-1

func swapTwoInts(_ a: inout Int, _ b: inout Int) {
    let temporaryA = a
    a = b
    b = temporaryA
}

var someInt = 3
var anotherInt = 107
swapTwoInts(&someInt, &anotherInt)
print("someInt is now