当我在Kotlin中使用observable时,是否需要使用newValue作为参数将其传递给函数?

时间:2018-04-14 14:11:53

标签: android kotlin

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
    }

1 个答案:

答案 0 :(得分:1)

代码B(因为"The value of the property has already been changed when this callback is invoked")和代码C都是正确的,但我只是在你需要在其他地方使用这个功能时才这样做。在这种情况下,B和C之间的选择将取决于您可以使用哪些功能。