我读了一些kotlin项目的示例代码,我发现很多作者都喜欢代码a。
我认为代码B更简单。
1:代码B是好方法吗?
2:我可以总是使用私人设置而不是私人val在Android Studio?
代码
private val _uiState = MutableStateFlow(InterestsUiState(loading = true))
val uiState: StateFlow<InterestsUiState> = _uiState.asStateFlow()
代码B
var uiState = MutableStateFlow(InterestsUiState(loading = true))
private set
A、B不是同一个代码
在代码A中,定义另一个变量,因为StateFlow
阻止从类外更改StateFlow
的值。
StateFlow
中的值。因为您可以参考MutableStateFlow
。
改变状态变量本身和改变StateFlow
中的状态是不同的。
观察者观察StateFlow
时,StateFlow
的值发生变化,但StateFlow
本身发生变化。
我看过这个例子
var userName by mutableStateOf("")
private set
但我认为最好的更好的封装是这样的,否认从单一的事实来源(视图模型持有人和负责管理状态)之外改变useName的可能性
private var _userName by mutableStateOf("")
val userName
get() = _userName