【问题标题】:Error when using type of inside function that takes type parameter使用带类型参数的内部函数类型时出错
【发布时间】:2021-04-11 07:10:46
【问题描述】:

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

function2 签名中的什么导致 type(of: ) 失败?

【问题讨论】:

  • 是否会混淆函数type(of:)和包含函数内部的参数type。那会令人失望,因为我已经为此花了一个小时。
  • 我认为问题是第二个函数中的通用参数名称。您将其称为“类型”,当您使用 type(of: ..) 时,编译器会尝试使用该参数,而不是普通的 type(of:) 函数。
  • 是的,这就是确切的原因。也总是将代码发布为文本而不是图像
  • @JoakimDanielson 我也想显示错误:)。但肯定会的

标签: swift generics typeof


【解决方案1】:

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

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

Swift.type(of: controller)

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多