我想为任何返回具有变量具体类型的新对象的类型创建扩展方法,例如:
class A
{
required public init() {}
}
class B : A {}
let myProp = B()
doSomethingWith(myProp)
func doSomethingWith(_ prop:A)
{
// Should create a new object of type B:
let foo = prop.createNew()
}
到目前为止,我的扩展程序如下所示:
extension NSObject
{
public func createNew() -> T
{
let t = type(of: self)
let new = t.init()
}
}
然而,它需要返回一个泛型类型,我坚持这一点。我如何正确实施createNew()
?
答案 0 :(得分:0)
只是Self
,对吧?
extension NSObject {
public func createNew() -> Self {
return type(of: self).init()
}
}