Kotlin 中变量名前导下划线的作用是什么?

Hub*_*ari 8 android kotlin

我是 Kotlin 新手,对变量_view中的下划线感到困惑。
请帮我。

class MainActivityPresenter(_view: View): Presenter {
    
        private var view: View = _view
Run Code Online (Sandbox Code Playgroud)

Ski*_*ᴉʞS 8

也许你可以阅读一下Names for backing properties,你会更好地理解它。

如果一个类有两个概念上相同的属性,但一个是公共 API 的一部分,另一个是实现细节,则使用下划线作为私有属性名称的前缀

这种情况很常见,viewModel因为您有 a 的私有 val MutableLiveData,然后您有相同名称的变量,但不带下划线,即可以从外部访问但不可变的变量。

例子 :

private val _user: MutableLiveData<User>
val user: LiveData<User>
    get() = _user
Run Code Online (Sandbox Code Playgroud)

在你的情况下,不要混淆View你的PresenterView构造函数中的。

  • 在上面的例子中 `_view` 不是一个属性。它只是构造函数的变量,用于设置“view”属性 - 它们是相同的。 (2认同)