konf
konf copied to clipboard
lazySet is not triggering update events
val handler = Account.maxRetry.onSet { value -> println("the maxRetry has changed to $value") }
val handler2 = Account.maxRetry.beforeSet { config, value -> println("the maxRetry will change to $value") }
val handler3 = config.beforeSet { item, value -> println("${item.name} will change to $value") }
val maxRetry by config.property(Account.maxRetry)
println(maxRetry)
config.lazySet(Account.maxRetry) { 4 }
println(maxRetry)
config[Account.maxRetry] = 6
println(maxRetry)
3
4
the maxRetry has changed to 6
the maxRetry will change to 6
maxRetry will change to 6
6
@xmlking It is difficult to decide how lazySet
triggers onSet
.
- If we trigger
onSet
whenconfig.lazySet(Account.maxRetry) { 4 }
, we have to evaluate{ 4 }
, which may be an expansive/non-deterministic calculation. - If we trigger
onSet
whenprintln(maxRetry)
, we have to trigger for every get operation ofmaxRetry
.
Maybe the better solution is to add a new onLazySet
API.
Which solution do you prefer?
This issue has been automatically marked as stale because it has not had recent activity. It will be closed after 30 days if no further activity occurs, but feel free to re-open a closed issue if needed.