back

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

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

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

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

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

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

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



(by. SYODA-Tuyano.)

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

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()




 

記事のリストに戻る



PC Site G+ mail