首页 > 解决方案 > 我可以在 kotlin 中始终使用私有集而不是私有 val 吗?

问题描述

我阅读了一些 kotlin 项目示例代码,我发现很多作者都喜欢 Code A。

我认为代码 B 更简单。

1:代码 B 是好方法吗?

2:我可以在 Android Studio 中始终使用私有集而不是私有 val 吗?

代码 A

private val _uiState = MutableStateFlow(InterestsUiState(loading = true))
val uiState: StateFlow<InterestsUiState> = _uiState.asStateFlow()

代码 B

var uiState = MutableStateFlow(InterestsUiState(loading = true))
    private set

标签: kotlin

解决方案


A、B 代码不一样。

在代码 A 中,定义另一个变量以防止从类外StateFlow更改值。StateFlow

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

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

当值发生变化但自身发生变化时,观察者StateFlow会收到事件。StateFlowStateFlow

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


推荐阅读