zerowa koalescencja przekłada się z grubsza na return x, unless it is null, in which case return y
Często potrzebuję return null if x is null, otherwise return x.y
mogę użyć return x == null ? null : x.y;
Nieźle, ale to null
w środku zawsze mi przeszkadza - wydaje się zbędne. Wolałbym coś takiego return x :: x.y;
, w którym to, co następuje po tym, ::
jest oceniane tylko wtedy, gdy to, co go poprzedza, nie jest null
.
Widzę to jako prawie przeciwieństwo koalescencji zerowej, w pewnym sensie zmieszane ze zwięzłym, wbudowanym sprawdzaniem null, ale jestem [ prawie ] pewien, że nie ma takiego operatora w C #.
Czy są inne języki, które mają takiego operatora? Jeśli tak, jak to się nazywa?
(Wiem, że mogę napisać odpowiednią metodę w C #; używam return NullOrValue.of(x, () => x.y);
, ale jeśli masz coś lepszego, też chciałbym to zobaczyć).