为什么我不能给 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
。所以你不能重新分配它。
代码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
。所以你不能重新分配它。