объединение нуля переводится примерно в 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);
, но если у вас есть что-то лучше, я бы тоже хотел это увидеть.)