swift 具有重叠类型约束的泛型函数

swift generic func with overlapping type constraints

我有这个协议层次结构:

protocol A {}

protocol B: A {}

如果我有以下两个函数会发生什么:

func myFunc<T : A where T: B>( object: T){ ... }
func myfunc<T : A>( object: T){ ... }

调用

会执行哪个函数
myFunc( object: myInstance ) 

myInstance 符合协议 B。在这种情况下 myInstance 匹配 2 个约束。

谢谢

一般规则是编译器会尝试 select most 特定/most 约束重载。

对于上面的示例,它将是 myFunc

的第一个版本