只有在右侧不为空的情况下才能分配更好的方法?

在Kotlin中,我只想在另一个variables不为空的情况下做一个赋值操作(否则,不操作)。 我可以想到两个简洁的方法:

fun main(args: Array) { var x: Int? = null var n = 0 // ... do something ... x?.let { n = it } // method 1 n = x ?: n // method 2 } 

不过,考虑到我必须做的频率,他们不够简洁。 第一种方法似乎是矫枉过正。 第二种方法是在需要expression式之后唠叨?:

我怀疑一定有更好的办法,比如n =? x n =? x ? 或者n = x? ? 在那儿?

One Solution collect form web for “只有在右侧不为空的情况下才能分配更好的方法?”

有以下几点:

 val x: Int? = null val n: Int = x ?: return 

这个编译非常好,即使n不能被分配。 即使在赋值之后使用n调用也是允许的,例如println(n) ,因为编译器只知道nInt并且没问题。 但是,任务后面的任何行将永远不会被调用,因为我们从范围return 。 根据你想要什么,这是一个没有操作。 我们不能继续,因为n不能被分配,所以只是返回。

另一种选择是val n: Int = x!! 这将抛出一个NullPointerException如果x == null应该在其他地方处理。 我不推荐这种做法,因为Kotlin提供了更清洁的方法来处理可空性。

  • 我需要关于Java中的null安全性的建议
  • Kotlin如果不是空的
  • kotlin函数返回null
  • Java to Kotlin转换器和可空方法参数
  • Kotlin不可为空值可以为null?
  • 如何在Kotlin中定义一个可空的委托成员?
  • null to listOf(),not null to listOf(value)in Kotlin in one liner?
  • Kotlin可为空的variables赋值
  • 困扰Kotlin的空安全
  • 有没有办法从一个范围创建一个非null数组?
  • 为什么不安全的.run()调用在Kotlin的空值上工作正常?
  • Kotlin language will be the best programming language for Android.