Java 中充斥着这样的语句:
if(cage.getChicken() != null) {
dinner = cage.getChicken();
} else {
dinner = getFreeRangeChicken();
}
在返回的对象被分配给 dinner
之前,需要对 getChicken()
进行两次调用。
这也可以写成这样一行:
dinner = cage.getChicken() != null? cage.getChicken() : getFreeRangeChicken();
但是,唉,还是有两个电话打到 getChicken()
。
当然,我们可以赋值一个局部变量,然后再次使用三元运算符赋值它,如果它不是 null 的话,但这是两行,并不那么漂亮:
FutureMeal chicken = cage.getChicken();
dinner = chicken != null? chicken : getFreeRangeChicken();
那么有没有办法说:
变量 var = 某个值,如果某个值不为空或其他值为空 价值;
我想我只是在这里讨论语法,在代码编译之后,从性能的角度来看,它可能不会对代码的编写方式产生太大的影响。
由于这是如此常见的代码,所以最好有一行程序来编写它。
其他语言有这个特性吗?