coalescência nula se traduz aproximadamente em return x, unless it is null, in which case return y
Eu frequentemente preciso return null if x is null, otherwise return x.y
Eu posso usar return x == null ? null : x.y;
Não é ruim, mas isso null
no meio sempre me incomoda - parece supérfluo. Eu prefiro algo como return x :: x.y;
, onde o que vem depois de ::
é avaliado apenas se o que vem antes não é null
.
Eu vejo isso como quase o oposto da coalescência nula, meio que misturada com uma verificação nula em linha e concisa, mas estou [ quase ] certo de que não existe tal operador em C #.
Existem outras linguagens que possuem esse operador? Se sim, como é chamado?
(Eu sei que posso escrever um método para ele em C #; eu uso return NullOrValue.of(x, () => x.y);
, mas se você tiver algo melhor, gostaria de ver isso também.)
return x ? x.y : NULL
. Oba por converter tipos de ponteiro em booleanos!