首页 > 解决方案 > Swift:无法推断通用参数“T”

问题描述

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

我写了这个:

func f<T: P>() -> T? {
    // ... 
}

但是当我尝试调用它时:

var fp = f()

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

标签: swiftswift-protocols

解决方案


你很亲密。假设您有一个struct A符合P. 然后您可以按如下方式指定泛型参数:

var fp: A? = f()

如果没有这些信息,编译器就无法知道fp应该是什么类型。


推荐阅读