2011-10-19 15 views
28

Sé que puedo vivir sin él, pero la pregunta me ha estado molestando.Ruby equivalente de Groovy's Elvis (? :) operator?

¿Hay un idioma Ruby que sea equivalente al de Groovy Elvis operator (?:)?

Esencialmente, quiero ser capaz de acortar este

PARAM = ARGV[0] ? ARGV[0] : 'default' 

o equivalentemente

PARAM = 'default' unless PARAM = ARGV[0] 

en algo como esto

PARAM = ARGV[0] ?: 'default' 
+1

posible duplicado de [¿Qué significa || = en Ruby?] (Http://stackoverflow.com/questions/995593/what-does-mean-in-ruby) –

+5

@AndrewGrimm Solo si ya conoce la respuesta : p – Igor

Respuesta

42

No importa :-) Acabo de encontrar la respóndeme después de averiguar el nombre del operador.

De here:

PARAM = ARGV[0] || 'default' 

(Debe ser porque estoy haciendo malabarismos con 4 idiomas en este momento así que me olvidé que podía hacer eso en primer lugar.)

+3

Alternativamente, si estás haciendo algo como '@params = @params || 5 'puedes acortarlo a' @params || = 5' –

+3

@RyanBigg: Para ser pedante, es más como '@paramos || @params = 5'. http://stackoverflow.com/questions/995593/what-does-mean-in-ruby/2505285#2505285 –

3

¿No es el mismo PARAM = ARGV[0] ? ARGV[0] : 'default' como PARAM = (ARGV[0] || 'default')?