I have this code:
// allocate one mesh
pScene.mNumMeshes = 1
pScene.mMeshes = mutableListOf(AiMesh())
val pMesh = pScene.mMeshes[0]
Where mMeshes is a parameter of type
var mMeshes: MutableList<AiMesh>? = null,
Compilers complains on the last row, where I try to declare pMesh
Smart cast to
MutableList<AiMesh>is impossible becausepScene.mMeshesis a complex expression
What's the problem?
Since mMeshes is a var property, it can change between the assignment of mutableListOf(AiMesh()) and the usage in pScene.mMeshes[0], meaning that it is not guaranteed to be not-null at the use site.
The compiler enforces null-safety, treating pScene.mMeshes as nullable MutableList<AiMesh>? and not allowing you to use it as MutableList<AiMesh> (i.e. it cannot safely perform a smart cast).
To fix that, you can simply make a non-null assertion:
val pMesh = pScene.mMeshes!![0]
Or just reuse the value you put into the list:
val pMesh = AiMesh()
pScene.mMeshes = mutableListOf(mesh)
// use `pMesh` below
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With