Java 中充斥着如下语句:
if(cage.getChicken() != null) {
dinner = cage.getChicken();
} else {
dinner = getFreeRangeChicken();
}
在返回的对象可以分配给 --- getChicken()
之前,需要两次调用 dinner
。
这也可以像这样写成一行:
dinner = cage.getChicken() != null? cage.getChicken() : getFreeRangeChicken();
但是,仍然有两个调用 getChicken()
。
当然,我们可以分配一个局部变量,然后如果它不为空,则再次使用三元运算符来分配它,但这是两行而不是那么漂亮:
FutureMeal chicken = cage.getChicken();
dinner = chicken != null? chicken : getFreeRangeChicken();
那么有没有办法说:
如果某个值不为空或某个其他值,则变量 var = 某个值;
而且我想我在这里只是在谈论语法,在编译代码之后,从性能角度来看,代码的编写方式可能没有太大区别。
由于这是如此常见的代码,因此有一个单行代码来编写它会很棒。
其他语言有这个功能吗?
原文由 Continuity8 发布,翻译遵循 CC BY-SA 4.0 许可协议
Java 缺少 coalesce 运算符,因此具有显式临时代码的代码是单次调用分配的最佳选择。
您可以将结果变量用作临时变量,如下所示:
然而,这很难阅读。