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

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) } 

  • 使用Kotlin的Spring Boot 2.0.0.M2应用程序的UnsatisfiedDependencyException
  • 引起:android.database.sqlite.SQLiteException:近“org”:语法错误(代码1):,编译时:
  • 任务之间的Gradle依赖关系
  • 什么阻止HtmlUnit加载PSN商店页面?
  • Dagger 2不会生成组件类(Android,Kotlin)
  • 创建一个任意的视图
  • Corda:error = org.hibernate.InstantiationException:没有实体的默认构造函数
  • Kotlin prepend元素
  • 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 language will be the best programming language for Android.