我想知道是否可以在 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)
这有点可能吗?
这有可能吗?
不,你不能在 Kotlin 中以这种方式设置属性*。
如果您想以更简洁的方式初始化或更改某些属性的值,您可以使用范围函数之一:
Kotlin 标准库包含多个函数,其唯一目的是在对象上下文中执行代码块。当您在提供了 lambda 表达式的对象上调用此类函数时,它会形成一个临时作用域。在此范围内,您可以访问对象而不需要其名称。此类函数称为作用域函数。其中有五个:
let、run、with、apply和also。
在这种特殊情况下,它似乎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)
| 归档时间: |
|
| 查看次数: |
1281 次 |
| 最近记录: |