我想创建一个具有两个值a和b 的结构,其中a必须始终等于b + 5,而b必须始终等于a - 5。我尝试了不同的方法来实现这一点,但我不确定哪种方法最有效且最易于维护。你能帮我优化它并找到最佳解决方案吗?
struct MyType1 {
init(a: Int) {
self.a = a
self.b = a - 5
}
init(b: Int) {
self.b = b
self.a = b - 5
}
var a: Int {
didSet(oldValue) {
print("didSet for a")
if (oldValue != a) && (b != (a - 5)) {
b = a - 5
}
}
}
var b: Int {
didSet(oldValue) {
print("didSet for b")
if (oldValue != b) && (a != (b + 5)) {
a = b + 5
}
}
}
}
struct MyType2 {
init(a: Int) {
self.internalA = a
self.internalB = a - 5
}
init(b: Int) {
self.internalB = b
self.internalA = b + 5
}
private var internalA: Int
private var internalB: Int
var a: Int {
get { return internalA }
set(newValue) {
internalA = newValue
internalB = newValue - 5
}
}
var b: Int {
get { return internalB }
set(newValue) {
internalB = newValue
internalA = newValue + 5
}
}
}
我会选择第三个选项,只存储其中一个属性,然后计算另一个属性