【发布时间】:2016-01-05 11:18:59
【问题描述】:
我有两个协议A 和B,其中B 继承自A。
protocol A { }
protocol B: A { }
我有一个实用程序类,它的函数名为add,其参数应符合协议A:
class Utility {
func add<T:A>(t:T.Type,param:T){
....
}
}
然后我有一个测试类,它创建Utility 的对象并调用它的函数add,它接受B 类型的参数(实现B 的类对象):
class Test {
var util: Utility
init() {
util = Utility()
}
func addItem(data:B){
util.add(B.self,param: data) // This line produces Cannot invoke add with argument list
} // of type (B.Protocol,param:B)
}
我做错了什么?
【问题讨论】:
-
请简单地复制粘贴您的代码以避免发布错误。
-
我认为您的情况可以简化为:swiftstub.com/171514009。似乎 Swift 无法处理带有约束的泛型函数中的协议类型参数。 (尚)不知道这是错误还是设计。