Swift 协议与扩展:深入解析与实践应用
1. 协议组合
协议继承虽强大,但使用不当可能导致类型设计不佳。例如,让 TabularDataSource 继承 CustomStringConvertible 以打印数据源描述,这两个协议并无关联,并非合适的继承选择。
protocol TabularDataSource: CustomStringConvertible {
...
}
上述代码中, TabularDataSource 继承 CustomStringConvertible 后, Department 打印输出效果不佳。 print() 函数在类型符合 CustomStringConvertible 时使用 description 属性,否则使用原始表示。为使 printTable(_:) 函数的参数确保传入数据符合要求,可使用协议组合。
func printTable(_ dataSource: TabularDataSource & CustomStringConvertible) {
print("Table: \(dataSource)")
...
}
协议组合使用
超级会员免费看
订阅专栏 解锁全文
370

被折叠的 条评论
为什么被折叠?



