Swift:无法推断通用参数'T'

Den*_*nis 4 swift swift-protocols

我有一个名为的协议P,我想写一个函数,它将返回符合该协议的任何类型的实例.

我写了这个:

func f<T: P>() -> T? {
    // ... 
}
Run Code Online (Sandbox Code Playgroud)

但是当我试着打电话时:

var fp = f()
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:Generic parameter 'T' could not be inferred.我做错了什么以及如何解决这个问题?谢谢你的帮助.

eir*_*vaa 8

你很近.假设你有一个struct A符合P.然后您可以指定泛型参数,如下所示:

var fp: A? = f()
Run Code Online (Sandbox Code Playgroud)

没有该信息,编译器无法知道fp应该是什么类型.