Отказ
Я не совсем уверен, что это правильный SE для этого, но я все равно начну здесь.
Фон
Я читал этот вопрос ранее и просматривал этот фрагмент кода в одном из ответов
auto z = [&](){ static auto cache_x = x;
static auto cache_y = y;
static auto cache_result = x + y;
if (x == cache_x && y == cache_y)
return cache_result;
else
{
cache_x = x;
cache_y = y;
cache_result = x + y;
return cache_result;
}
};
Лично я был бы склонен переписать это следующим образом, с одним оператором возврата
auto z = [&](){ static auto cache_x = x;
static auto cache_y = y;
static auto cache_result = x + y;
if (x == cache_x && y == cache_y)
{
}
else
{
cache_x = x;
cache_y = y;
cache_result = x + y;
}
return cache_result;
};
но для части if
остается пустое тело.
Мы могли бы переписать if/else
так, чтобы оно было if(!(x == cache_x && y == cache_y))
, но это рискует быть неправильно понятым (и может стать грязным).
Мой вопрос
Какой самый приемлемый способ написать что-то подобное, если мы
- имеют несколько операторов возврата
- оставить тело
if
пустым
- переписать условие
if
в отрицательную версию
- что-то еще
Обратите внимание, я обычно пишу на Java, тогда как пример кода на C ++. Меня интересует общепринятый способ работы, а не конкретные конструкции / методы C ++.