// 协议组合 —— 被接受
// 协议组合,可以包含1个类型(最多1个)
protocol LivableC {}
protocol RunnableC {}
class PersonH {}
// 接受Person或者子类的实例
func fn0(obj: PersonH){}
// 接收遵守Livable协议的实例
func fn1(obj: LivableC) {}
// 接受同时遵守Livable、Runnable协议的实例
func fn2(obj: LivableC & RunnableC) {}
// 接收同时遵守Livable、Runnable协议、并且是Person或者其子类的实例/必须同时遵守,没有或的概念
func fn3(obj: PersonH & LivableC & RunnableC) {}
// 重新进行定义
typealias RealPerson = PersonH & LivableC & RunnableC
func fn4(obj: RealPerson){}
// CaseIterable
// 让枚举遵守CaseIterable协议,可以实现遍历枚举值
enum Season: CaseIterable {
case spring, summer, autumn, winter
}
let seasons = Season.allCases
print(seasons.count)
for season in seasons {
print(season)
}
网友评论