android - Android ViewModel 中的 Kotlin 支持属性

标签 android kotlin

只是想知道,为什么使用 MutableLiveData 的支持属性更好,而不是仅仅公开将 MutableLiveData 属性作为实时数据返回的 getter 函数。例如:
为什么这个代码

private val _registeredDevicesObservable: MediatorLiveData<List<Data>> = MediatorLiveData()
val registeredDevicesObservable: LiveData<List<Data>> = _registeredDevicesObservable
比这个更好或更容易接受
private val _registeredDevicesObservable: MediatorLiveData<List<Data>> = MediatorLiveData()
fun registeredDevicesObservable(): LiveData<List<Data>> = _registeredDevicesObservable
同样,当这个 getter 函数保持 LiveData 不变性并让我在访问 View 模型中的属性时不会遇到那种烦人的下划线语法。

最佳答案

在语言中使用简单地返回一个已经可用的对象的函数只是不太习惯。您可以随意按照自己喜欢的方式进行操作,但如果其他人必须使用您的代码,那么如果您遵循一般约定,就会更容易理解和使用。
关于支持属性是否应在名称中包含前导下划线并没有那么严格的约定,因此如果您不喜欢它,请不要使用它。
坚持这些约定的一个原因是有一个 proposed upcoming language feature允许您在没有支持属性的情况下执行此操作,因此如果您遵循约定,更新代码以消除支持属性将非常容易。

关于android - Android ViewModel 中的 Kotlin 支持属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67901855/

相关文章:

android - 在 Android 中设置背景颜色并使用 Drawable 作为背景

android - Flutter应用程式库APK启动应用程式时不存在错误

android - MockK - 左匹配器的匹配模拟签名失败 : [any(), any()]

recursion - Kotlin递归堆栈溢出

java - 从 Java 打开 TortoiseSVN GUI

android - 如何解决 Android 中的错误 "HeapWorker is wedged "?

android - 从 ip 地址获取广播地址的最佳方法是什么?

Android Unity 插件 - 未找到类异常

android - Dagger Hilt 没有在测试中注入(inject)

java - android,如何判断5G是NSA还是SA?