有没有更好的方法来访问可空属性?

sound.id属性从可空或不可通过的方式转换为play方法的参数,最好的办法是什么?

class Sound() { var id: Int? = null } val sound = Sound() ... //smarcat imposible becouse 'sound.id' is mutable property that //could have changed by this time if(sound.id != null) soundPool.play(sound.id, 1F, 1F, 1, 0, 1F) //smarcat imposible becouse 'sound.id' is mutable property that //could have changed by this time sound.id?.let { soundPool.play(sound.id, 1F, 1F, 1, 0, 1F) } 

2 Solutions collect form web for “有没有更好的方法来访问可空属性?”

使用由let提供的参数将是非空的:

 sound.id?.let { soundPool.play(it, 1F, 1F, 1, 0, 1F) } 

要么

 sound.id?.let { id -> soundPool.play(id, 1F, 1F, 1, 0, 1F) } 

let{}是这里的解决方案。

只要这样写:

 sound.id?.let { soundPool.play(it, 1F, 1F, 1, 0, 1F) } 

– 编辑 –

it是一个类型为Int (不是Int? )的参数 – 谢谢@ mfulton26指出了这一点

  • kotlin项目不能在gradle中建立(找不到参考)
  • 具有迭代函数的kotlin无限序列
  • 使用范围的稀疏值列表
  • 杰克逊@JsonIgnoreProperties多个字段与Kotlin
  • Kotlin类没有从firebase获取它的布尔值
  • 以编程方式在标签栏中创建视图寻呼机,但查看寻呼机内容则滚动浏览标签
  • 如何使用kotlinpoet生成带有单个类型参数的Kotlin“Unit”类型的构造函数参数?
  • 我们如何使用自动重新加载?
  • Kotlin language will be the best programming language for Android.