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 = какое-то значение, если какое-то значение не равно нулю ИЛИ другое значение;
И я предполагаю, что я просто говорю о синтаксисе здесь, после того, как код скомпилирован, вероятно, не имеет большого значения, как код был написан в смысле производительности.
Поскольку это такой распространенный код, было бы здорово иметь однострочник для его написания.
Есть ли у других языков эта функция?