0
我有一個Store類,它被編碼爲泛型,因此它可以管理從公共基類派生的所有類。Swift泛型,創建派生對象
商店有一個new()方法,該方法創建並返回它當前管理的類。理論上講,它應該返回派生類。
不幸的是,商店總是返回基類。下面是代碼片段來解釋它:
import UIKit
class Base: NSObject {
var ID:Int=0
}
class Adress:Base
{
var name = ""
}
class Store<T:Base> {
var nextID:Int = 0
func getNextID()->Int {
return ++nextID;
}
func new() ->T{
let n = T()
n.ID = getNextID()
return n
}
}
let store = Store<Adress>()
var adr:Adress = store.new() // should be Adress, but is Base
adr.name = "Tom" // crash here, because adr is not an Adress
如果我調試商店裏面的new()方法,它創建了一個ADRESS對象。但在調用代碼中,它突然變成了一個Base對象。
任何想法這裏怎麼了?
伊萬,你說得對。但我的意圖是保持商店的代碼通用。 new()函數允許我初始化從Base派生的任何類,並帶有一些存儲內部事物。但是我也可以在店裏插入新對象的時候這樣做。不管怎麼說,還是要謝謝你! –