null злиття перекладається приблизно на 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);
, але якщо у вас є щось краще, я хотів би це також побачити.)