拡張
Swift では既存のクラス (classes)、構造体 (structs)、Enums に機能を追加することができます。
これは自分で定義して、ソースコードを持っているクラスに対しては当然といえますが、 ソースコードにアクセスできないようなクラスに対しても行うことができます。
例えば、String に対しても機能を追加できます。
Swift の拡張とは
Swift では既存のクラス、構造体、列挙型に後付けで機能を追加することができます。
これを拡張 (extensions) といいます。
拡張では次のことが実現可能です。
- コンピューテッド・プロパティの追加
- インスタンスメソッド、タイプメソッドを定義
- 新しいイニシャライザを追加
- サブスクリプト (添え字) の定義
- ネストタイプ (nested types) の追加
- プロトコルに従うよう変更する
さっそく具体例をみてみましょう。
次の例では String を拡張して、hello という関数を追加しています。この関数は "Hello, (元の文字列)!" という形式の文字を出力します。
extension String {
func hello() {
print( "Hello, \(self)" )
}
}
var s = "Ichiro"
s.hello()
実行結果
Hello, Ichiro