Kotlin,由于复杂的表达式,智能转换是不可能的

Kotlin,由于复杂的表达式,智能转换是不可能的,kotlin,Kotlin,我有以下代码: // allocate one mesh pScene.mNumMeshes = 1 pScene.mMeshes = mutableListOf(AiMesh()) val pMesh = pScene.mMeshes[0] 其中,mmesh是类型的参数 var-mMeshes:MutableList?=空, 编译器在最后一行抱怨,在那里我试图声明pMesh 智能转换到MutableList是不可能的,因为pScene.mmehes是一个复杂的表达式 问题是什么?由于mmee

我有以下代码:

// allocate one mesh
pScene.mNumMeshes = 1
pScene.mMeshes = mutableListOf(AiMesh())
val pMesh = pScene.mMeshes[0]
其中,
mmesh
是类型的参数

var-mMeshes:MutableList?=空,

编译器在最后一行抱怨,在那里我试图声明
pMesh

智能转换到
MutableList
是不可能的,因为
pScene.mmehes
是一个复杂的表达式


问题是什么?

由于
mmees
是一个
var
属性,它可以在
mutableListOf(AiMesh())
的赋值和
pScene.mmees[0]
中的用法之间进行更改,这意味着不能保证它在使用站点上不为空

编译器执行,将
pScene.mMeshes
视为可空
MutableList)

要解决此问题,您只需制作一个:

或者只是重复使用您在列表中输入的值:

val pMesh = AiMesh()
pScene.mMeshes = mutableListOf(mesh)
// use `pMesh` below

Does
val pMesh=pScene.mmesh!![0]
工作吗?如果是这样的话,那是因为
mmehes
var
(不保证赋值后不为空)。哦,天哪,是的,我没想到。。如果你回答,我会接受的,谢谢!或者使用类似于
val pMesh=AiMesh().apply{pScene.mmesh=mutableListOf(this)}
val pMesh = AiMesh()
pScene.mMeshes = mutableListOf(mesh)
// use `pMesh` below