我可以总是使用私有set而不是私有val在kotlin?

  • 本文关键字:val kotlin 我可以 set kotlin
  • 更新时间 :
  • 英文 :


我读了一些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的值。

在代码B中,您可以从类外更新StateFlow中的值。因为您可以参考MutableStateFlow

改变状态变量本身和改变StateFlow中的状态是不同的。

观察者观察StateFlow时,StateFlow的值发生变化,但StateFlow本身发生变化。

换句话说,您应该使用代码A来防止来自外部 的意外突变。

我看过这个例子

var userName by mutableStateOf("")
private set

但我认为最好的更好的封装是这样的,否认从单一的事实来源(视图模型持有人和负责管理状态)之外改变useName的可能性

private var _userName by mutableStateOf("")
val userName
get() = _userName

相关内容

  • 没有找到相关文章

最新更新