[英]Swift: Call self method inside init
我想實現這樣的事情:
class A {
var a, b, c, d: Int
init() {
reset()
}
func reset() {
a = 1
b = 2
c = 3
d = 4
}
func blablabla() {
...
}
}
無法編譯,錯誤消息:
初始化之前使用的變量“ self.a”
我必須將代碼從reset()
復制到init()
。
這是缺陷還是有其他解決方法?
不,這不是缺陷,在所有存儲的屬性都已初始化並且調用了超類初始化器(如果有)之前,不能在初始化器中引用self
。
在您的情況下,在方法中進行初始化並從初始化程序中調用它似乎是合法的,但是不幸的是,它不起作用。
可能的解決方案:
在調用reset
之前,用假值初始化屬性:
init() { self.a = 0 self.b = 0 self.c = 0 self.d = 0 reset() }
要么
var a = 0 var b = 0 var c = 0 var d = 0 init() { reset() }
提供a,b,c和d默認值,尤其是如果您要立即更改它們時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.