代码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
}
}
答案 0 :(得分:2)
it
作为lambda中的局部变量传递。因此,基本上,您正在尝试修改Val
。不会编译。
内联乐趣
T.let(block:(T)-> R):R
根据作用域函数let
的定义,它将使用this
值作为参数调用该块(将作为lambda传递)。因此,它将是方法参数val
。因此,您不能重新分配它。