我正盯着前同事的代码(在扩展程序中),如下所示:
func set<Object: SomeProtocol>(object value: Object) {
与普通旧版本相比,带有泛型的签名有什么优势?
func set(object value: SomeProtocol) {
答案 0 :(得分:2)
作为一种模式,您的前同事的版本更灵活,因为它应该适用于任何类型的协议。例如,具有关联类型的协议将不适用于您的版本:
// error: protocol 'Equatable' can only be used as a generic constraint because it has Self or associated type requirements
func foo(bar: Equatable) {}