2017-10-20 150 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