知识卡片
协议组合是轻量级的能力交集声明
内容
一个参数有时需要同时满足两个协议的要求(比如既要有”姓名”又要有”年龄”),Swift 不需要为此专门定义一个新协议去继承两者,直接在类型标注处用 协议A & 协议B 这种组合写法即可表达”传进来的类型必须同时遵循这两个协议”,调用方随便传一个同时实现了这两个协议的具体类型的实例就能通过。这比要求参数类型继承自某个具体基类更灵活:一个类型可以同时遵循任意多个协议(类只能有一个父类),协议组合让”我需要哪几种能力”可以按需临时拼装,而不用提前设计出一整棵符合所有排列组合的协议继承树。
参考来源
《Swift全解析:新式iOS实战开发》第20章《Swift协议》