UNINITIALIZED_VARIABLE变量_longPressed必须被初始化

我有一个处理程序和Runnable,当runnable执行我需要从我的处理程序中删除回调。

如果我这样做,就这样

private val _handler = Handler() private val _longPressed: Runnable = Runnable { _handler.removeCallbacks(_longPressed) } 

编译时错误发生错误UNINITIALIZED_VARIABLE

如果我将removeCallBacks方法移动到函数,错误消失了,我很有趣,有什么区别?

 private val _longPressed: Runnable = Runnable { removeRunnable() } fun removeRunnable(){ _handler.removeCallbacks(_longPressed) } 

在进行_longPressed变量赋值的编译时,它首先计算Runnable代码(变量的值)。 由于在这种情况下_longPressed不存在,它会引发编译错误。

在后面的情况下,在编译时评估Runnable代码时,它只知道它必须调用一个存在于类(_longPressed)上的变量的存在函数removeRunnable