libro
www.tuyano.com
初心者のためのSwiftプログラミング入門

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

作成:2014-11-08 11:12
更新:2014-11-08 11:12

■プロトコルとエクステンションを組み合わせる

このプロトコルとエクステンションを組み合わせると、ちょっと面白いことができます。

エクステンションは、メソッドやプロパティだけでなく、「プロトコルを追加する」ということもできるのです。これにより、既にある複数のクラスに共通した機能を実装し、まとめて処理できるようになります。

これも、実際の利用例を見てみましょう。下のリスト欄では、MyDataPrintableというプロトコルを作成し、そこにprintDataメソッドを用意してあります。そして、エクステンションを使い、このようにStringやIntにMyDataPrintableプロトコルを追加しています。
extension String: MyDataPrintable {……}
extension Int: MyDataPrintable {……}

こうすることで、すべてのString値やInt値がMyDataPrintableとして扱えるようになります。つまり、StringIntを同じプロトコルのクラスとして、まったく同じようにまとめて処理できるようになるわけです。

このように、エクステンションとプロトコルは、単に自分のクラスを強化するだけでなく、Swiftに用意されているあらゆるクラスに独自の拡張を行い、自分なりにカスタマイズすることを可能にします。なかなか強力な機能なので、ぜひ覚えておきましょう。

※プログラムリストが表示されない場合

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

●プログラム・リスト●

protocol MyDataPrintable {
    func printData ()
}

extension String: MyDataPrintable {
    func printData() {
        println("文字列:\(self).")
    }
}

extension Int: MyDataPrintable {
    func printData() {
        println("整数:\(self).")
    }
}

var str = "Hello"
var num = 12345
str.printData()
num.printData()

※関連コンテンツ

「初心者のためのSwiftプログラミング入門」に戻る