使用带有类型参数的内部函数类型时出错

Error when using type of inside function that takes type parameter

为什么在简单函数中使用 type(of:) 时没有问题。但是一旦函数更改为接受通用参数 T,type(of:) 就会破坏自己吗?即使函数签名中没有任何内容会影响它。

使 type(of:) 失败的 function2 签名中有什么?

当您说 type 时,Swift 以为您指的是函数的 参数 type,但实际上您指的是 type(of:) function.

您可以指定type(of:)函数的模块名称(Swift)来区分:

Swift.type(of: controller)

或将参数重命名为其他名称:

public func function2<T>(t: T.Type, controller: UIViewController) -> Any
                         ^