нулевое объединение примерно означает return x, unless it is null, in which case return y
Мне часто нужно return null if x is null, otherwise return x.y
я могу использовать return x == null ? null : x.y;
Неплохо, но то, null
что посередине, меня всегда беспокоит - кажется лишним. Я бы предпочел что-то вроде return x :: x.y;
, где то, что следует за ::
, оценивается, только если то, что ему предшествует, не оценивается null
.
Я считаю это почти противоположностью слияния нулей, как бы смешанной с краткой встроенной нулевой проверкой, но я [ почти ] уверен, что такого оператора в C # нет.
Есть ли в других языках такой оператор? Если да, то как это называется?
(Я знаю, что могу написать для этого метод на C #; я использую return NullOrValue.of(x, () => x.y);
, но если у вас есть что-нибудь получше, я тоже хотел бы это увидеть.)