我有一个名为P
的协议,并且我想编写一个函数,该函数将返回符合该协议的任何类型的实例。
我写了这个:
func f<T: P>() -> T? {
// ...
}
但是当我尝试调用它时:
var fp = f()
我收到此错误:Generic parameter 'T' could not be inferred
。我在做错什么以及如何解决这个问题?
感谢您的帮助。
答案 0 :(得分:6)
您非常亲密。假设您有一个符合struct
的{{1}} A
。然后,您可以指定通用参数,如下所示:
P
没有这些信息,编译器将无法知道var fp: A? = f()
的类型。