美文网首页
Swift的协议组合

Swift的协议组合

作者: 凯司机 | 来源:发表于2021-06-23 17:34 被阅读0次

// 协议组合 —— 被接受
// 协议组合,可以包含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)
}

相关文章

网友评论

      本文标题:Swift的协议组合

      本文链接:https://www.haomeiwen.com/subject/gmgbyltx.html