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