当前位置: 首页 > 知识库问答 >
问题:

当我在 Kotlin 中使用可观察性时,我是否需要使用 newValue 作为参数来传递给函数?

郗丰
2023-03-14

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个答案

丌官嘉良
2023-03-14

代码B(因为“调用此回调时属性的值已经更改”)和代码C都是正确的,但我只会在您需要在其他地方也使用此函数时才会这样做。在这种情况下,B和C之间的选择将取决于您使用的函数。

 类似资料:
  • 问题内容: 为了不重复我的自我,我想创建一个函数来处理一些命令。 一旦我尝试运行它,我得到以下错误: 我研究了的实现,并且看起来函数签名正是我提供的。 在内部a 应该与可变参数相同,但对于编译器来说似乎不一样。 有没有办法将可变参数传递给? 问题答案: 您用另一个扩展 从语言规范的传递参数…参数 如果最终参数可分配给切片类型,则在参数后跟时可以将其作为参数的值原样传递。在这种情况下,不会创建新的切

  • 不确定这件事可以完成,但我想创建一个新的子类,将父类和其他附加参数作为参数传递。 例如,如果我有: 对于lombo,有没有一个构建器让我创建一个子类,将父类和缺少的值作为参数传递? 如果我能写出这样的东西会更容易:

  • 我一直只使用Java6,现在正在赶上学习Java8的新内容。我在这里读了这篇文章:http://www.drdobbs.com/jvm/lambda-expressions-in-java-8/240166764?pgno=2 上面写着: Java API在Java中定义了几个通用功能接口。util。功能包。其中一个接口BiFunction描述了参数类型为T和U以及返回类型为R的函数。您可以将字符

  • 我需要一个明确的解释这一点,即使我读了这个关于差异的链接,但没有明确的清晰。那么有没有人可以简单地用代码向我解释一下呢?

  • 我发现了这个例子: 但是我不明白为什么我们需要和?和方法是用于什么?

  • 问题内容: 我已经熟悉Android框架和Java,并希望创建一个通用的“ NetworkHelper”类,该类可以处理大多数联网代码,使我能够从中调用网页。 我遵循了来自developer.android.com的这篇文章来创建我的网络类:http : //developer.android.com/training/basics/network- ops/connecting.html 码: