【发布时间】:2017-08-03 04:57:55
【问题描述】:
我正在尝试这样做:
protocol Fly {
}
class Bird: Fly {
}
func fetch<T: Fly>(model: T) {
print("Done")
}
let bird: Fly = Bird()
fetch(model: bird)
但是我得到了这个错误:
无法使用“(模型:Fly)”类型的参数列表调用“获取”
我将let bird: Fly = Bird() 设置为Fly 类型,因为函数fetch 采用任何符合该协议的对象,它不应该工作吗?
有什么想法吗?
【问题讨论】:
-
如果您使用协议,则执行此操作的语法为
func fetch<T>(model: T) where T: Fly。我相信您输入的内容是用于子类化。但它仍然显示相同的错误。 -
@adev 感谢您指出这一点!是的,仍然认为同样的错误:(
-
任何你不这样做的理由 ->
func fetch(model: Fly)可以正常工作, -
我将使用一个库,并且可能需要将此功能与它结合起来(除非没有必要,但目前不确定)。想看看我做错了什么,因为我没有使用泛型的经验
标签: swift xcode generics swift-protocols