Hullaballoonatic
06/19/2019, 6:44 PMclass MyClass(foo: Int, bar: Int) {
private var fooLock = false
var foo = foo
set(v) {
fooLock = true
if (!barLock) bar += (v - field)
field = v
fooLock = false
}
private var barLock = false
var bar = bar
set(v) {
barLock = true
if (!fooLock) foo += (v - field)
field = v
barLock = false
}
}
streetsofboston
06/19/2019, 6:46 PMHullaballoonatic
06/19/2019, 6:47 PMmathew murphy
06/19/2019, 6:48 PMwithLock
extension?Hullaballoonatic
06/19/2019, 6:49 PMmathew murphy
06/19/2019, 6:50 PMkarelpeeters
06/19/2019, 8:28 PMclass MyClass(var foo: Int, bar: Int) {
val delta = bar - foo
var bar: Int
get() = foo + delta
set(v) { foo = v - delta }
}
Hullaballoonatic
06/19/2019, 8:36 PMkarelpeeters
06/19/2019, 8:37 PMHullaballoonatic
06/19/2019, 10:44 PMkarelpeeters
06/19/2019, 10:47 PMclass MyClass(foo: Int, bar: Int) {
var foo = foo
set(v) {
if (field != v) {
field = v
bar += (v - field)
}
}
var bar = bar
set(v) {
if (field != v) {
field = v
foo += (v - field)
}
}
}
Still ugly and unreadable but it's not as bad.Hullaballoonatic
06/19/2019, 10:47 PMkarelpeeters
06/19/2019, 10:47 PMHullaballoonatic
06/19/2019, 10:48 PM