
今回はジェネリクス(generics)について書きたいと思います。
構造体(generics)の説明から実際の使用例までサンプルコードをもとにわかりやすく説明していきたいと思います。
型に左右されずに、関数やクラスを定義する事ができる仕組みです。
サンプルを見ればすぐわかると思うのでとりあえずコードを見てみましょう!
下記コードはprint()するだけの簡単な関数です。(関数にするまでもありませんが)
引数でInt型を指定して出力結果は1250となっています。
func all(x: Int) {
print(x)
}
all(x: 1250)//結果 1250
では今回のポイントです!
この関数をInt型ではなくString型でも使いたい場合、String型にして同じ関数を書けば良いのですが、それもちょっと面倒ですよね??
ここで登場するのがジェネリクスです!
下記コードの見てみましょう!
func all<T>(x: T) {
print(x)
}
all(x: 1250)//結果 1250
all(x: "mayugezio")//結果 mayugezio
まずは4行目、5行目の結果から見て欲しいです。
同じ「関数all」を使っているのに引数で「Int型」と「String型」違う型を指定できているのがわかると思います。
ジェネリクスを使うとこのような事が可能になります。
書き方は簡単です。
func all<T>(x: T) {
print(x)
}
関数名の隣に、<T>と書いて引数の型にTを指定してあげればOKです!
このTですが、Tじゃなくても大丈夫ですが慣例的にTが使われてるみたいです。
今回は型を汎用化できるジェネリクスについて書きました。
すごく便利ですね!
コードを書いていて、面倒だなって思った時は簡単に書ける方法が用意されていたりするのでちょっと調べたりしてみると良いと思います!
>> ジェネリスクを使ってみよう
>> ジェネリスク(generics)
ジェネリクスでは?
本当ですね(^^;
ご指摘ありがとうございます!
修正しました!