【发布时间】: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<P>(...)。我不确定为什么不能推断。
标签: swift