在Elvis运算符中使用求值表达式是否最佳



在Kotlin中,如果我写:

val result = costlyGetter() ?: "default"

costlyGetter会被调用两次吗?

否则,我会写这个:

val subresult = costlyGetter()
val result = subresult ?: "default"

但这更为冗长。

答案不是。它将被称为单一时间。基本上,这两个例子都在做同样的事情,但第二个例子是创造了一个不需要的价值

结论是你可以选择第一个选项。很好。

(可以问并回答自己的问题(

正如matt Freke建议的那样,我查看了一份打印声明,它只被调用过一次。所以它被优化了(或者说,"不悲观"(,我们可以称之为val result = costlyGetter() ?: "default"

最新更新