protocol

protocol Record {
    var wins: Int {get}
    var losses: Int {get}

    func winningpercent() -> Double
}

可以在拓展中实现协议

extension Record {
    var description: String {
        return String(format: "WINS:%d,LOSSES:%d",arguments:[wins,losses])
    }

    var gamePlayed: Int {
        retrun wins + losses
    }
}

可以定义另外一个协议,然后限定同时实现两个协议的实现,继承这个拓展

protocol Tieable{
    var ties: Int {get set}
}

extension Record where Self: Tieable {
    var gamePlayed: Int {
        retrun gane: {
            return wins + losses + ties
        }
    }
}

struct FootballRecord : Record,Tieable {
    var wins: Int
    var losses: Int
    var ties: Int
}

可以限定方法传入的参数必须符合bc两种(或其他)协议

func a (one:protocol<b,c>) {
    ......
}

struct aa: b,c {
    .....
}

a(aa)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容