假设有一个带有属性列表的类 A:
class A {
val list = mutableListOf<String>()
fun addAText() {
list.add("a text")
}
}
Run Code Online (Sandbox Code Playgroud)
但现在不仅方法addAText()可以将字符串添加到列表中,而且来自世界各地的每个人都可以。
所以我将上面的代码重写为:
class A {
private val mutList = mutableListOf<String>()
val list: List<String>
get() = mutList
fun addAText() {
mutList.add("a text")
}
}
Run Code Online (Sandbox Code Playgroud)
那么问题是:有更好的方法吗?像任何语法支持或标准 kotlin 库一样?额外的私有属性似乎不是一个优雅的解决方案。
这是最好的方法,并且有一个使用下划线的约定。重复相同的命名,但为私有添加下划线。
private val _list = mutableListOf<String>
val list: List<String>
get() = _list
Run Code Online (Sandbox Code Playgroud)
是命名约定的一部分,称为支持属性
对于实时数据非常有用
private val _liveText = MutableLiveData("default")
val liveText: LiveData<String>
get() = _liveText
fun update(text: String) {
_liveText.value = text
}
Run Code Online (Sandbox Code Playgroud)
因此,在 ViewModel 中,您公开了可观察的内容,但封装了可变的内容。
| 归档时间: |
|
| 查看次数: |
481 次 |
| 最近记录: |