Swift 入門 | プロトコルと拡張 | プロトコルと拡張の組み合わせ
プロトコルと拡張を組み合わせると、便利な設計ができる。
拡張はメソッドやプロパティだけでなく、プロトコルも追加できる。複数の既存の型に共通の機能を実装し、まとめて処理できる。
protocol MyDataPrintable {
func printData ()
}
extension String: MyDataPrintable {
func printData() {
print("문자열 : \(self).")
}
}
extension Int: MyDataPrintable {
func printData() {
print("숫자 : \(self).")
}
}
var str = "Hello"
var num = 12345
str.printData()
num.printData()
この例では、printData メソッドを持つ MyDataPrintable プロトコルを宣言している。続いて拡張を使い、String と Int にプロトコルへの準拠を追加している。
extension String: MyDataPrintable {...}
extension Int: MyDataPrintable {...}
すべての String 値と Int 値を MyDataPrintable として扱える。異なる型を同じプロトコルを通じて統一的に処理できる。
プロトコルと拡張は、自作クラスを強化するだけではない。Swift に含まれる型を独自にカスタマイズすることもできる。