在 Kotlin 中的一行中填充多个字段

A.F*_*ish 3 android kotlin

我想知道是否可以在 Kotlin 中的一行中填充多个字段(只是为了更清晰的代码)

我的代码:

val evh = ExampleViewHolder(binding.root)
evh.mImageView = binding.myImageView
evh.mTextView1 = binding.text1
evh.mTextView2 = binding.text2
Run Code Online (Sandbox Code Playgroud)

我想实现这样的目标:

(evh.mImageView, evh.mTextView1, evh.mTextView2) = (binding.myImageView, binding.text1, binding.text2)
Run Code Online (Sandbox Code Playgroud)

这有点可能吗?

jsa*_*mol 5

这有可能吗?

不,你不能在 Kotlin 中以这种方式设置属性*。

如果您想以更简洁的方式初始化或更改某些属性的值,您可以使用范围函数之一:

Kotlin 标准库包含多个函数,其唯一目的是在对象上下文中执行代码块。当您在提供了 lambda 表达式的对象上调用此类函数时,它会形成一个临时作用域。在此范围内,您可以访问对象而不需要其名称。此类函数称为作用域函数。其中有五个:letrunwithapplyalso

在这种特殊情况下,它似乎apply是最合适的:

val evh = ExampleViewHolder(binding.root).apply {
    mImageView = binding.myImageView
    mTextView1 = binding.text1
    mTextView2 = binding.text2
}
Run Code Online (Sandbox Code Playgroud)

*请注意,类似的内联语法在 Kotlin 中是有效的,并且用于解构声明

val (first, second) = listOf("firstValue", "secondValue")
Run Code Online (Sandbox Code Playgroud)