【发布时间】:2019-04-30 13:53:47
【问题描述】:
请看下面的代码:
class A {
let a: String
let b: String
init(a: String, b: String) {
self.a = a
self.b = b
}
}
class B: A {
let c: Bool
private let aExpectedValue = "a"
private let bExpectedValue = "b"
override init(a: String, b: String) {
c = (a == aExpectedValue && b == bExpectedValue)
super.init(a: a, b: b)
}
}
这会导致B.init 出现错误:
但是,如果我将其更改为 c = (a == aExpectedValue) 或 c = (b == bExpectedValue),那么它会正确编译。
有人知道这是为什么吗?
【问题讨论】:
-
[a|b]ExpectedValue是实例属性,即链接到self,在正确初始化之前,您不能在init中使用self。 -
@user28434 那么为什么它只适用于
c = (a == aExpectedValue)?
标签: swift