【问题标题】:Rewrap generic class [duplicate]重新包装泛型类[重复]
【发布时间】:2019-05-05 03:04:36
【问题描述】:

这是我的代码:

import UIKit

class GenericClass<T: NSObject> {

    let generic: T
    let somethingElse: String

    init(generic: T, somethingElse: String) {
        self.generic = generic
        self.somethingElse = somethingElse
    }

    func wrap<P: NSObject>(with: P) -> GenericClass<P> {
        return GenericClass(generic: with, somethingElse: somethingElse)
    }
}

class Person {
    func transform() {
        let classA: GenericClass<UIViewController> = GenericClass(generic: UIViewController(nibName: nil, bundle: nil), somethingElse: "")
        let rewrapped: GenericClass<UIView> = classA.wrap(with: UIView())
    }
}

我得到这个编译器错误:

无法推断通用参数“P”

编译器无法推断类型,但我不明白为什么在方法中需要这样做。它应该只返回具有指定类型的 GenericClass。

我想用另一种类型替换 generic 并保持 somethingElse 不变。为什么它不适用于wrap 方法?

【问题讨论】:

  • 返回GenericClass&lt;P&gt;(...)。我不确定为什么不能推断。

标签: swift


【解决方案1】:

wrap中指定泛型

func wrap<P: NSObject>(with: P) -> GenericClass<P> {
    return GenericClass<P>(generic: with, somethingElse: somethingElse)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-12
    • 2019-06-04
    • 2016-05-26
    • 2011-05-27
    • 2011-08-19
    • 1970-01-01
    • 2011-12-24
    • 2015-11-20
    相关资源
    最近更新 更多