allList是私有变量,Code A效果很好。
我希望为代码A写一个有趣的事,在代码B和代码C之间哪一个是正确的?
如果代码B和代码C都正确,哪一个在代码B和代码C之间更好?
代码A
private var allList by Delegates.observable(listOf<MSetting>())
{ property, oldValue, newValue ->
btnRestore.isEnabled = newValue.size >= 1
}
代码B
private var allList by Delegates.observable(listOf<MSetting>())
{ property, oldValue, newValue ->
setButtonsByRecord()
}
private fun setButtonsByRecord(){
btnRestore.isEnabled=allList.size>=1
}
代码C
private var allList by Delegates.observable(listOf<MSetting>())
{ property, oldValue, newValue ->
setButtonsByRecord(newValue)
}
private fun setButtonsByRecord(my:List<MSetting>){
btnRestore.isEnabled=my.size>=1
}
答案 0 :(得分:1)
代码B(因为"The value of the property has already been changed when this callback is invoked")和代码C都是正确的,但我只是在你需要在其他地方使用这个功能时才这样做。在这种情况下,B和C之间的选择将取决于您可以使用哪些功能。