ジェネリクス関数を使う方法 をやったけどジェネリクスクラスも使えるよ。
ここでもTに注目してみよう。
Swiftでジェネリクスクラスを使う
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
class User<T> { var age: T init(age: T) { self.age = age } } let user = User(age: 20) print(type(of: user.age)) // Int print(user.age) // 20 let user2 = User(age: "20") print(type(of: user2.age)) // String print(user2.age) // "20" |
Tで型が柔軟になってるから、String型でもInt型でもinitできてるよ。
よくあるよね、API側でStringとIntがカオス化してることって。。。
こんな感じにしとけばそんな場合もうまく吸収してあげることができるよ。
もちろん柔軟になる分、型はどうなってるか意識しないと崩壊することがあるから気をつけよう。