2017-10-20 122 views
0

新的具体目标我要创建任何类型的返回一个新的对象和具体类型的变量,例如扩展方法:创建自变量

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

这只是Self,对吧?

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

我会被诅咒,但它的工作!看起来我过分复杂的概念。 – BadmintonCat