Ruby equivalente a C # 's ?? operatore [duplicato]
-
08-10-2019 - |
Domanda
Eventuali duplicati:
C # ?? operatore in Ruby?
C'è un operatore di rubino che fa la stessa cosa come C # 's ?? operatore?
Il ?? restituisce operatore della mano sinistra operando se non è nullo, altrimenti ritorna l'operando di destra.
Soluzione
Il nome dell'operatore è l'operatore null coalescenza . Il post originale ho collegato a che copriva le differenze di nulla coalescenza tra le lingue è stata presa verso il basso. Un recente confronto tra C # e Ruby nulla coalescenza può essere trovato qui .
In breve, è possibile utilizzare ||
, come in:
a_or_b = (a || b)
Altri suggerimenti
Se non ti dispiace coalescenza falso, è possibile utilizzare il || operatore:
a = b || c
Se falso può essere un valore valido, si può fare:
a = b.nil? ? c : b
Dove b è controllato per zero, e se è, a viene assegnato il valore di c, e se non, b.
Essere consapevoli del fatto che Ruby ha caratteristiche specifiche per il solito nulla coalescenza per []
o 0
o 0.0
.
Al posto di
x = y || [] # or...
x = y || 0
... si può (perché NilClass
attrezzi loro) solo fare ...
x = y.to_a # => [] or ..
x = y.to_i # or .to_f, => 0
In questo modo alcuni modelli di progettazione comune come:
(x || []).each do |y|
... guarda un po 'più bello:
x.to_a.each do |y|