iOS Swift No.21 - 协议4

第二十一章 协议

12. Protocol Composition (协议组合)

有些时候需要在同一时间来请求一个类型来遵循多个协议,所以我们可以把多个协议组合在一起形成一个单一的请求,这个过程我们称之为协议组合。如果说我们定义一个暂时性的本地协议,并且这个协议在一个组合里面请求多个协议的时候,这个时候协议组合并不会定义新的协议类型。

协议组合有这样的一个形式SomeProtocol & AnotherProtocol,随意我们可以添加很多个协议只要符合当前这个协议组合的形式就行,并用&符号分开这些协议,一个协议组合同样也可以只有一个类类型,用来指明一个请求的父类。

下面这个例子是将两个协议Named和Aged组合成了一个单一的协议组合,来作为函数的参数类型,

// 组合两个协议
protocol Named {
   
    var name: String {
    get }
}
protocol Aged {
   
    var age: Int {
    get }
}
struct Person: Named, Aged {
   
    var name: String
    var age: Int
}
// 组合协议作为函数的参数类型
func wishHappyBirthday(to celebrator: Named & Aged) {
   
    print("Happy birthday, \(celebrator.name), you're \(celebrator.age)!")
}
let birthdayPerson = Person(name
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值