Swift プロトコル、パート2

プロトコルは型注釈(型アノテーション)などの型指定に使用できます。つまり構造体・クラス・列挙型と同じように「型として使用できる」ということですね。

sample1

protocol ProtocolA{
    var prop:Int{get}
}

func printProp(a:ProtocolA){
    print(a.prop)
}

struct StructA:ProtocolA{
    var prop=1002
}

let structA=StructA()
printProp(a:structA)
1002

sample1の関数printPropはProtocolAプロトコルに準拠した型のインスタンスを引数として受け取り、受け取ったインスタンスのpropプロパティを表示する関数です。引数の型注釈としてProtocolA型を指定していますので、引数として渡せるのはProtocolAに準拠した型のインスタンスのみ、ということになります。

sample1では、ProtocolAに準拠した構造体StructAを定義し、StructA型のインスタンスを生成、それをprintProp関数に渡しています。

structAのプロパティpropには1002がセットされていますので、それが表示されます。


 

コメントを残す

メールアドレスが公開されることはありません。