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

Why do we use val instead of var for remembering mutable state in Jetpack Compose?

提问人:Subscription Me 提问时间:3/18/2022 最后编辑:z.g.ySubscription Me 更新时间:10/23/2022 访问量:943

问:

我一直看到编写的示例代码

val text = remember{ mutableStateOf("") }

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

var text = remember{ mutableStateOf("") }
人造人 科特林 android-jetpack-compose 可变

评论


答:

2赞 ocos 3/19/2022 #1

在 kotlin 中,用于声明无法重新指向另一个对象的引用。 您不能更改参照,但始终可以更改指向对象的状态。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 的等价物是 Java 中引用的关键字。valfinal