我想要一個類的實例方法來創建它自己的一個實例 並將它追加到一個數組。類創建它自己的一個實例
我嘗試這樣做:
var vampireArray: [Vampire] = []
class Vampire {
func createSelf() {
vampireArray.append(Vampire())
}
}
但我得到一個奇怪的錯誤控制檯上像(lldb)
任何想法,爲什麼?
我想要一個類的實例方法來創建它自己的一個實例 並將它追加到一個數組。類創建它自己的一個實例
我嘗試這樣做:
var vampireArray: [Vampire] = []
class Vampire {
func createSelf() {
vampireArray.append(Vampire())
}
}
但我得到一個奇怪的錯誤控制檯上像(lldb)
任何想法,爲什麼?
即使不知道該代碼的上下文,一般來說,創建一個類的實例並將其追加到類的範圍之外的數組是不好的。
請改爲將vampireArray.append(Vampire())
這一行放在您原本計劃投入的位置createSelf()
。
如果你想堅持這條路線,它會像createSelf()
應該是一個靜態方法和var vampireArray: [Vampire] = []
也應該是一個靜態變量內類的方法。
編輯:
如果你想要做的就是跟蹤吸血鬼的數量,這可能是一個很好的解決方案:
class Vampire {
static var VampireCount = 0
init(){
Vampire.VampireCount += 1
}
}
然後,每當你想訪問計數,只需使用Vampire.VampireCount
這個想法是,當一個吸血鬼對象createSelf另一個吸血鬼對象被創建。陣列只是保持吸血鬼的數量。 –
@ManosSerifios然而,創建另一個吸血鬼對象是初始化程序的工作。你用'吸血鬼()'來做到這一點。如果你想用你新創造的吸血鬼做些什麼,你應該在你吸血鬼陣列的範圍內做。如果數組完全保持計數,那麼也許應該將其更改爲整數。 – TheBrownCoder
@ManosSerifios我編輯了我的答案,提出了一個可能的解決方案 – TheBrownCoder
向我們顯示您的錯誤消息 - 此代碼在Playground中工作,所以您的問題在別處。你也應該解釋你實際想要達到的*,我們可能會建議其他解決方案,而不是你目前的嘗試。 – Moritz