ジェネリクスとはなんぞやという話ですが、明示的に型を指定せず、柔軟に処理を行えるようなものを言う。
実際に処理を見たほうがわかりやすいと思うので書くね。
Swiftでジェネリクスを使う
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
func max<T: Comparable> (x: T, y: T) -> T { // if x > y { // return x // } else { // return y // } // 上と同じ意味 return x > y ? x : y } // Intで使う print(max(x: 5, y: 10)) // 10 print(max(x: 39, y: 13)) // 39 // Stringで使う print(max(x: "a", y: "z")) // "z" print(max(x: "hoge", y: "fuga")) // "hoge" |
呼び出し側でわかるように、Intでも関数を使ってるし、Stringでも問題なく使えてるよ。
今回のmax関数は、数字では大きい方、文字ではアルファベット順が後の方を返してるよ。
ちなみに今回は T を使ってるけど、何でもいいよ。
慣習的にTを使うことが多いのでこだわりがなければTを使おう。