为什么不能为LiveData <Boolean>分配值?

时间:2020-10-15 07:27:08

标签: android kotlin android-livedata

代码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
   }
}

1 个答案:

答案 0 :(得分:2)

it作为lambda中的局部变量传递。因此,基本上,您正在尝试修改Val。不会编译。

内联乐趣 T.let(block:(T)-> R):R

根据作用域函数let的定义,它将使用this值作为参数调用该块(将作为lambda传递)。因此,它将是方法参数val。因此,您不能重新分配它。