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.

http://msdn.microsoft.com/en-us/library /ms173224.aspx

È stato utile?

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|
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top