はじめに
先日、extension について調べてまとめる機会があったので、簡単にまとめてみました。
extensionとは何か
Swift では既に存在している型に、プロパティやメソッドやイニシャライザなどの方を構成する要素を追加できます。この型の拡張を extension と呼びます。
主に
- クラス
- 構造体
- 列挙型
などに対して機能を拡張します。他にも Int や String などの型でも拡張できます。
定義方法
extension の定義方法は以下のように宣言できます。
extension エクステンションを定義する対象の型 {
対象の方に追加したい要素
}
継承との違い
クラスを拡張するという意味では、継承と extension はとても似ています。
しかし、継承の場合は、あるクラスの機能を拡張するため、別のクラスが必要になります。
それに対して extension は既にあるクラスを動的に拡張でき、継承の際に発生するオーバーライドがありません。
つまり、継承はクラスを引き継いで新たなクラスを別名で作るのに対し、extension はそのままの名前でメソッドやプロパティを追加できます。
メソッドの追加例
String 型を拡張して printHello()というメソッドを追加していきます。
extension String {
func printHello(){
print("Hello, \(self)")
}
}
let string = "World!"
string.printHello()
これを実行すると実行結果は、Hello, World!
になると思います。
参考文献
- Swift 実践入門