我有这个代码:
// allocate one mesh
pScene.mNumMeshes = 1
pScene.mMeshes = mutableListOf(AiMesh())
val pMesh = pScene.mMeshes[0]
Run Code Online (Sandbox Code Playgroud)
mMeshes类型参数在哪里
var mMeshes: MutableList<AiMesh>? = null,
编译器在最后一行抱怨,我试图声明 pMesh
聪明的演员
MutableList<AiMesh>是不可能的,因为pScene.mMeshes是一个复杂的表达
有什么问题?
hot*_*key 25
由于mMeshes是一个var属性,它可以在赋值mutableListOf(AiMesh())和使用中进行更改pScene.mMeshes[0],这意味着它不能保证在使用站点不为null.
编译器强制执行null安全性,将其pScene.mMeshes视为可空,MutableList<AiMesh>?并且不允许您将其用作MutableList<AiMesh>(即它无法安全地执行智能转换).
要解决这个问题,您可以简单地进行非空断言:
val pMesh = pScene.mMeshes!![0]
Run Code Online (Sandbox Code Playgroud)
或者只是重复使用您放入列表中的值:
val pMesh = AiMesh()
pScene.mMeshes = mutableListOf(mesh)
// use `pMesh` below
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8131 次 |
| 最近记录: |