Genericsについて簡単に

今回はGenericsについて簡単にまとめてみた。色々解説するよりも、実例を見てもらうのが一番分かりやすいと思う。

文法

func 関数名<任意の型名>() {
}

例えば、異なる型の値を受け取って返す処理を書く時に、下記のような冗長な記述になってしまう。これは関数の引数には型指定が必要という制約があるためである。

func returnNumber(x: Int) -> Int {
    return x
}

func returnNumber(x: Double) -> Double {
    return x
}

ここで、Genericsの登場。上記の様なコードは下記の様にシンプルに記述することができる。

func returnNmber<T>(x: T) -> T {
    return x
}
returnNmber(123)
returnNmber(456.7)

まとめ

一言で言うとGenericsとは、関数を使う側で扱う型を指定できるようにする仕組みである。冒頭でも述べたが、関数の引数には型指定が必要という制約があるが、Genericsを使用することにより、抽象的なコードを記述することができる。
注意点としては、コードが複雑になる(個人的には)ので、多用はしない方が吉。

以上