当前位置: 首页 > 知识库问答 >
问题:

科特林,聪明的演员是不可能的,因为复杂的表情

乐正秦斩
2023-03-14

我有这个代码:

// allocate one mesh
pScene.mNumMeshes = 1
pScene.mMeshes = mutableListOf(AiMesh())
val pMesh = pScene.mMeshes[0]

其中mMeshes是类型的参数

< code>var mMeshes: MutableList

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

智能投射到MutableList

有什么问题?


共有1个答案

郭星文
2023-03-14
匿名用户

由于<code>mmesh的赋值和<code>pScene中的用法之间变化。mmesh[0],这意味着不能保证它在使用站点上不为空。

编译器强制空安全,将<code>视为pScene。将设为可空<code>可变列表

要解决这个问题,您可以简单地进行非空断言:

val pMesh = pScene.mMeshes!![0]

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

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

 类似资料:
  • 我将Java代码转换为静态编程语言(Android Studio的自动转换),我得到以下错误: Java方法如下所示: 静态编程语言中的转换代码: 我没有找到解决方案,因为我没有正确理解它。任何指导将不胜感激。 感谢您抽出宝贵时间接受采访

  • 我对科特林聪明的演员感到困惑。在我看来,等价于

  • 我的困难是 如何修复函数SortByTotal中的任何错误? 1.1错误:(32,51)Kotlin:无法智能强制转换为“OrderProcessing.OrderNode”,因为“Run.Next”是一个复杂的表达式 我明白有很多错误,回答其中的任何一个部分或者给我一些暗示已经很感激了。谢谢你的好意。 我的代码如下: 涉及的类:

  • 我在kotlin中实现了一个LinkedList,并编写了一个方法从中删除重复项: 在最后两行: (在addNodeToTail方法中),编译器表示由于复杂的表达式,智能转换是不可能的。我必须添加非空断言调用(!!)。 我想了解为什么这个解决方案不被接受,尽管while表达式检查该节点。next不为空。我想知道是否有比使用非空断言调用更好的解决方案(!!)。 感谢您的帮助

  • 主要活动如下: 当单击fab按钮时,我尝试在数据模型中增加计数器 但是我在第< code > mview model . counter . value 行得到一个错误 智能转换为“整数”是不可能的,因为“mView模型.计数器.值”是一个复杂的表达式 错误是什么意思? 这里是数据模型 编辑 如果我注释掉空检查 我收到错误 在Int类型的可空接收器上只允许安全(?)或非空断言(!!)调用? 编辑

  • 问题内容: 我正在学习具有C ++和Java背景的Kotlin。我期待下面的打印,不。我知道这对应到。默认实现不比较每个成员,即和吗?如果是这样,它会不会看到字符串值相等(因为再次映射到字符串值)?显然,我在Kotlin中还没有涉及平等与身份相关的问题。 问题答案: 您描述的默认实现仅适用于数据类。不适用于从中继承实现的常规类,只需使对象与自身相等即可。