Swift 入門 | プロトコルと拡張 | 拡張

プロトコルはクラスにメソッドの実装を求めるものだった。拡張は、既存のクラスにメソッドを直接追加する機能である。構文は簡単である。

extension クラス名 {
    ...... 追加する内容 ......
}

クラス名 には機能を追加するクラスを指定する。

メソッドだけでなくプロパティも追加できる。ただし、追加できるのは getset の処理を定義する計算型プロパティだけである。

拡張は自作クラスだけでなく、Swift の標準ライブラリや iOS フレームワークが提供するクラスにも利用できる。

たとえば、Int を拡張し、1 から指定した数までの合計を求める getTotal メソッドを追加してみよう。

extension Int {
    func getTotal()->Int {
        var total:Int = 0
        for i in 1...self {
            total += i
        }
        return total
    }
}

var num = 1234
print(num.getTotal())

extension Int と記述して Int 型を拡張している。これにより、すべての Int 値で getTotal メソッドを利用できる。var num = 1234 のように作成した通常の変数でも呼び出せる。100 までの合計を求めるなら、100.getTotal() を実行すればよい。

IntString のような Swift の基本的な型にも、拡張を使って簡単に機能を追加できる。