在Kotlin中,如果我写:
val result = costlyGetter() ?: "default"
costlyGetter
会被调用两次吗?
否则,我会写这个:
val subresult = costlyGetter()
val result = subresult ?: "default"
但这更为冗长。
答案不是。它将被称为单一时间。基本上,这两个例子都在做同样的事情,但第二个例子是创造了一个不需要的价值
结论是你可以选择第一个选项。很好。
(可以问并回答自己的问题(
正如matt Freke建议的那样,我查看了一份打印声明,它只被调用过一次。所以它被优化了(或者说,"不悲观"(,我们可以称之为val result = costlyGetter() ?: "default"
。