back

プロトコルとエクステンション (3/4)

■エクステンション(Extension)とは?

プロトコルは、クラスにメソッドの実装を義務付けるものでしたが、エクステンションExtension)は、クラスに直接メソッドを付け加えてしまう機能です。これは使い方も非常に簡単で、こんな具合に記述します。
extention クラス名 {
    ……追加内容……
}

クラス名」には、機能を追加するクラス名を指定します。実に簡単ですね。

追加できるのはメソッドだけでなく、プロパティもOKです。ただしプロパティの場合は、「Computedプロパティ」のみが追加可能です。メソッドのようにget/setの処理を用意するタイプのプロパティのことでしたね。

このエクステンションは、自作のクラスだけでなく、Swiftのシステムライブラリとして用意されているクラスや、iOSのフレームワークのクラスなどもそのまま拡張してしまうことができます。

例として、Intクラスを拡張して、1からその数字までの合計を得るメソッドgetTotalを追加してみましょう。下にそのリストを掲載しておきます。

ここでは、extension IntというようにしてIntクラスを拡張しています。こうすることで、Int型の値全てにgetTotalメソッドが追加されるようになります。var num = 1234というように普通に作成したInt変数もgetTotalが使えるようになっていることがわかるでしょう。あるいは、例えば「100までの合計を調べたい」というときにも、ただ「100.getTotal()」と実行するだけです。

IntStringといった、Swiftのもっとも基本的なものについても、このようにエクステンションで簡単に機能を追加することができるのです。



(by. SYODA-Tuyano.)

※リストが表示されない場合

AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。

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

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




   

記事のリストに戻る



PC Site G+ mail