🦔
Swift ジェネリクスとはメモざっくり
・関数や型がさまざまな方に対して動作する場合
・コードの再利用性を高めたい場合
・型の安全性を確保したい場合
にジェネリクスを使用することで、コードの柔軟性と保守性が向上するらしい
2つのジェネリック引数を比較する関数
※Swift標準ライブラリのプロトコルEquatable 型が等しいかどうかを比較するために基本的なインターフェース
protocol Equatable {
static func == (lhs: Self, rhs: Self) -> Bool
static func != (lhs: Self, rhs: Self) -> Bool
}
func areEqual<T: Equatable>(_ a: T, _ b: T) -> Bool {
return a == b
}
let isEqual = areEqual(3, 3) // true
let isNotEqual = areEqual("Hello", "World") // false
ジェネリック型"T"
<T>は、ジェネリック型のパラメーターを示している、この関数はTがどんな値であっても動作する。
Tは呼び出し時に具体的な、型(例えば、Intや、String)に置き換えられる。
呼び出し時に、型が変更されているが問題なく動作している。
配列の要素を検索する関数
ジェネリィティクスを使用して、配列内に特定の要素が含まれているかチェックする関数↓
//element→関数がチェックする単一の要素
//arrayはT型の要素を含む配列
func containsElement<T: Equatable>(_ element:T,in array:[T]) -> Bool {
//array.containsはelementがarrayに含まれているか確認している。
return array.contains(element)
}
let numbers = [1,2,3,4,5]
let hasThree = containsElement(3, in:numbers)//true
let hasSeven = containsElement(7, in:numbers)//false
2つのジェネリック型を持つペアを作成するクラス
class Pair<A,B> {
var first: A
var second: B
init(first:A, second: B) {
self.first = first
self.second = second
}
}
let pair = Pair(first: 3,second:"Hello")
print(pair.first) //3
pritt(pair.second)//Hello
Pairクラスは、A,Bのジェネリティクス型のパラメーターを受け取る。
Pairクラスは、任意の2つの型をペアとして扱うことができる。
僕的に覚えておきたいこと
<>を使用することでジェネリィティクス型とすることができる
ジェネリティクスを使用することで、異なる型のペアを作れたりする
<T>は関数の呼び出し時に、型が置き換えられる
Discussion