为什么我不能给 LiveData<Boolean> 赋值?

Why can't I assign a value to LiveData<Boolean>?

代码A可以很好地工作。 我觉得代码B也可以,但实际上失败了,为什么?

错误信息如下。

无法重新分配 Val

代码A

val displayCheckBox : LiveData<Boolean> = _displayCheckBox

fun switchCheckBoxShowStatus(){
   _displayCheckBox.value?.let {
       _displayCheckBox.value = !it
   }
}

代码B

val displayCheckBox : LiveData<Boolean> = _displayCheckBox

fun switchCheckBoxShowStatus(){
   _displayCheckBox.value?.let {
       it = !it
   }
}

it 在 lambda 中作为局部变量传递。所以基本上你正在尝试修改 Val 。哪个不会编译。

inline fun <T, R> T.let(block: (T) -> R): R

作为作用域函数 let 的定义,它将调用块(作为 lambda 传递)并以 this 值作为其参数。所以它将是一个方法参数 a val 。所以你不能重新分配它。