我想实现这样的事情:
class A {
var a, b, c, d: Int
init() {
reset()
}
func reset() {
a = 1
b = 2
c = 3
d = 4
}
func blablabla() {
...
}
}
Run Code Online (Sandbox Code Playgroud)
哪些无法编译,错误信息:
在初始化之前使用变量"self.a"
它不会使我必须将代码复制从意义reset()到init().
这是缺陷还是有另一种方法可以做到这一点?
Ant*_*nio 11
不,它不是缺陷,self在初始化所有存储的属性之前,不能在初始化程序中引用,并且已调用超类初始化程序(如果有的话).
在你的情况下,在方法中进行初始化似乎是合法的,并从初始化程序调用它,但不幸的是它不起作用.
可能的解决方案:
在调用之前使用伪值初始化属性reset:
init() {
self.a = 0
self.b = 0
self.c = 0
self.d = 0
reset()
}
Run Code Online (Sandbox Code Playgroud)
要么
var a = 0
var b = 0
var c = 0
var d = 0
init() {
reset()
}
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
2078 次 |
| 最近记录: |