带有多个参数的 Kotlin setter

标签 kotlin setter

可以轻松设置 setter,例如 data如何使用相同的方法设置 1 个以上的值?
我用不雅的方法setData来完成它。

class MyClass{
    var data = listOf<GithubRepo>()  // individual setter
        set(value) {
            field = value
        }

    lateinit var listener: (GithubRepo) -> Unit // lambda

   // classical setter like in Java
   fun setData( data: List<GithubRepo>,  listener: (GithubRepo) -> Unit): Unit{
        this.data = data
        this.listener = listener
    }
}

是否有更多 Kotlin 方法可以从方法中设置多个变量?

最佳答案

由于 setter 函数的工作方式,这是不可能的——它们只接受一个参数。即使您考虑使用带有多个参数的 setter,它看起来也不对:

x.data = items, { /** listener impl */ }

如果你真的想要,你可以将你的参数分组到一个对象中:
x.data = Wrapper(items, { /** listener impl */ })

但即使是这个建议也不好。在我看来,最好的方法是使用 Java 风格的 setter(它不是典型的 setter,因为它有多个参数),你认为它不优雅,但至少 Kotlin 为你提供了更好的调用语法:
x.setData(items) { /** listener impl */ }

关于带有多个参数的 Kotlin setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62183527/

相关文章:

android - withContext(Dispatchers.IO) 如何用于房间

c# - 如何使用 VS 的自动选项设置/获取值

c++ - 这是否在 C++ setter 中使用有关系吗?

c# - c#类中类的getter和setter

java - 避免在 Kotlin 中生成对象的静态实例

android - Koin 未找到类的定义,但已声明

generics - Kotlin,通用加法

android - 在Splashscreen Activity里面我实现了接口(interface)。 Kotlin中如何将接口(interface)数据发送到多个Activity?

导致 exc_bad_access 的 swift setter

java - 如何使用 JDOM 设置 boolean 字段