让块不起作用,给出“Only safe (?.)...”错误

问题描述 投票:0回答:1

我的

parent
变量是
nullable
,并且有一个
getWidth
函数。我只想在parent不为空时调用
getWidth
,所以我做了这个
let
函数:

return parent.let {
    it.getWidth() * (perWidth / 100.0f)
} ?: run{
    App.realWidth.toFloat()
}

另外,如果为空,我想调用

App.realWidth.toFloat()
,所以我将其添加到
?: run
中,我读到就像在
else
函数中执行
let
一样。

问题是它在

it.getWidth()

上给了我这个错误

仅允许安全 (?.) 或非空断言 (!!.) 调用 ParentInterface 类型的可空接收器?

我不明白为什么,因为它不能为空,因为它位于

let
块内。

我该如何解决这个问题?

android kotlin let
1个回答
3
投票

你应该写成

return parent?.let {

否则,当它为空时,它仍然出现在

let
块中,
it
为空

© www.soinside.com 2019 - 2024. All rights reserved.