为什么我们使用 val 而不是 var 来记住 Jetpack Compose 中的可变状态?

发布于 2025-01-15 05:18:16 字数 254 浏览 1 评论 0原文

我不断看到编写的示例代码

val text = remember{ mutableStateOf("") }

当文本字符串发生变化时,val不是var吗?因此以下行也应该有效?绝对想了解为什么我可以使用 val 代替。

var text = remember{ mutableStateOf("") }

I keep seeing sample codes written

val text = remember{ mutableStateOf("") }

When the string of the text changes, isn't the val a var? Hence the following line should also work? Definitely would like to prefer to understand why I can use val instead.

var text = remember{ mutableStateOf("") }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

沉溺在你眼里的海 2025-01-22 05:18:16

在科特林中,
val 用于声明不能重新指向另一个对象的引用。
您无法更改引用,但始终可以更改指向对象的状态。

变化的字符串部分封装在由 Remember 创建的对象中,而不是 text 引用中。

val text = remember{ mutableStateOf("") }
val myCar = Car() // object 578

// changing the state of the car
// but not the myCar
myCar.setSpeed(100) 

// compiler will not allow changing the reference
// myCar = anotherCar

var latestCar = Car() // object 345

// latestCar refererence will point to object 578
latestCar = myCar

Kotlin 的 val 相当于 java 中引用的 final 关键字。

In kotlin,
val used for declaring a reference which will not be able to repoint to another object.
You can not change the reference but you can always change the state of pointed object.

The changing string part is encapsulated in the object created by remember, not the text reference.

val text = remember{ mutableStateOf("") }
val myCar = Car() // object 578

// changing the state of the car
// but not the myCar
myCar.setSpeed(100) 

// compiler will not allow changing the reference
// myCar = anotherCar

var latestCar = Car() // object 345

// latestCar refererence will point to object 578
latestCar = myCar

Kotlin's val is the equivalent of final keyword for references in java.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文