从变量创建新的具体对象

时间:2017-10-20 04:01:19

标签: swift oop generics

我想为任何返回具有变量具体类型的新对象的类型创建扩展方法,例如:

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()

1 个答案:

答案 0 :(得分:0)

只是Self,对吧?

extension NSObject {
    public func createNew() -> Self {
        return type(of: self).init()
    }
}