Odpowiednik Rubiego do C# ?? operator

Odpowiednik Rubiego do C# ?? operator

Nazwa operatora to operator łączenia wartości null. Oryginalny wpis na blogu, do którego podałem link, który dotyczył różnic w zerowej koalescencji między językami, został usunięty. Nowsze porównanie między koalescencją zerową C# i Ruby można znaleźć tutaj.

Krótko mówiąc, możesz użyć || , jak w:

a_or_b = (a || b)

Jeśli nie masz nic przeciwko połączeniu fałszu, możesz użyć || operator:

a = b || c

Jeśli false może być prawidłową wartością, możesz wykonać:

a = b.nil? ? c : b

Gdzie b jest sprawdzane na zero, a jeśli tak, a jest przypisywana wartość c, a jeśli nie, b.


Pamiętaj, że Ruby ma specyficzne funkcje dla zwykłego łączenia wartości null do [] lub 0 lub 0.0 .

Zamiast

x = y || [] # or...
x = y || 0

...możesz (ponieważ NilClass implementuje je) po prostu zrób...

x = y.to_a # => [] or ..
x = y.to_i # or .to_f, => 0

To sprawia, że ​​niektóre popularne wzorce projektowe, takie jak:

(x || []).each do |y|

...wygląda trochę ładniej:

x.to_a.each do |y|