はじめに
ジェネリクスを利用すれば複数の型においても汎用的な処理を実装できる。また、ジェネリクスのコンセプトとしては入力値の型も任意にすることによってプログラムの汎用性をさらに高めるものである。尚、今回はジェネリクス「関数」を例にして記載する。
詳細
- 超簡単に言うと IntやStringなど型に捉われず汎用的に型の定義や処理を実装できる
- ジェネリクスの基本定義
- func 関数名<型引数>(引数名: 型引数) -> 戻り値の型 { 関数の呼び出しに実行される文 }
- 戻り値にもジェネリクスを定義できる。
- func 関数名<型引数>(引数名: 型引数) -> 戻り値の型 { 関数の呼び出しに実行される文 }
Swift
//Tというジェネリクスを引数に取り、Tというジェネリクスを返す
//<T: AdditiveArithmetic>が意味するのは、「AdditiveArithmeticプロトコルに準拠したあらゆる型」と言う意味。加算などを可能にするプロトコル。
func sum<T: AdditiveArithmetic>(a: T, b: T) -> T {
return a + b
}
print(sum(a: 1, b: 2)) //3
print(sum(a: 1.5, b: 1.5))//3 <<< 少数の計算もできる
//ジェネリクスが出てくる以前はオーバーロードで対応していた(上記ソースコードに倣って)
func sum(a: Int, b: Int) -> Int {
return a + b
}
print(sum(a: 1, b: 2))
func sum(a: Double, b: Double) -> Double {
return a + b
}
print(sum(a: 1.5, b: 1.5))
おわりに
何かご指摘事項がございましたらぜひコメント欄でご教授ください。
参考記事
AdditiveArithmetic | Apple Developer Documentation
[増補改訂第3版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 (WEB+DB PRESS plusシリーズ)
↑引用元
石川 洋資 (著), 西山 勇世 (著)
発行者:片岡 巌
出版社:技術評論社
印刷/製本:日経印刷株式会社
開発環境
- Xcode-13.4.1
- Swift version 5.7