Jetpack Compose中`= remember`与`by remember`声明变量的区别是什么?
两种remember变量声明方式的区别解答
核心结论
两种写法不存在任何功能上的差异,仅为Kotlin语法特性带来的使用便捷性区别,底层执行逻辑完全一致。
具体差异说明
- 第一种
=赋值写法
你拿到的aa是完整的MutableState<Boolean>类型对象,后续读写值必须手动操作其value属性:// 读取值 val currentValue = aa.value // 修改值 aa.value = false - 第二种
by委托写法
用到了Kotlin的属性委托语法糖,编译器会自动帮你隐含value属性的读写操作,你可以直接把aa当作普通Boolean类型变量使用:// 读取值 val currentValue = aa // 修改值 aa = false
补充说明
两种写法不会产生性能差异,反编译字节码后可以看到执行逻辑完全相同。实际开发中更推荐使用
by委托的写法,代码更简洁,也能避免漏写.value导致的异常问题。
内容的提问来源于stack exchange,提问作者Suee97
相关产品推荐
相关产品推荐

