2011-03-25 8 views
25

tienen un montón de lugares a los que tenga que añadir¿hay una línea de rubí "return if x"?

if this_flag 
    return 
end 

se puede hacer esto en una sola línea con el rubí?

+6

¿Por qué no probar esto antes de preguntar? Use 'irb' y juegue con lo que pueda y PUEDE hacer con Ruby :) – DJTripleThreat

+3

@DJTripleThread: Me da ganas de crear" Déjame IRB para ti ". –

+1

para personas con problemas como los dos anteriores, tenga en cuenta el excelente RANGO de respuestas que se proporcionan a continuación, que resaltan el poder del rubí (en lugar de lamentarse por la obvia respuesta obvia). Ese es el poder de SO y es por eso que nunca pediré disculpas por hacer una pregunta 'obvia'. – jpwynn

Respuesta

75

¿hay un rubí de una línea "return if x"?

Sí:

return if x 

Me encanta Rubí :-)

+3

, también estoy llegando ... ¡SABÍA que tendrían un atajo! – jpwynn

6

Algunas adiciones a la buena respuesta de Jörg W Mittag:

x && return 
x and return 
if x then return end 

Yo en realidad no recomiendo las dos primeras formas : sin embargo, los ejemplos anteriores son todas producciones válidas. Personalmente prefiero evitar el return en general; la mayoría de los constructos gramaticales en Ruby son expresiones utilizables.

Happy coding.

4

Ruby siempre devuelve lo último ... ¿Por qué no simplemente estructurar su código de manera diferente?

def returner(test)  
    "success" if test 
end 

Lo que haya hecho la última vez volverá. Amo a Ruby.

+1

+1. Solo para aclarar: en este caso, 'nil' será devuelto. –

+1

Sí, la definición del método devolverá 'nil'. Sin embargo, llamar al método devolverá cosas diferentes ... dependiendo. 'returner (true)' => '" success "' Mientras 'returner (false)' => 'nil' – Ryanmt

1

Cree un método que compruebe los tipos de clase esperados Ejemplo a continuación. El método check_class devolverá verdadero tan pronto como encuentre la clase correcta. Útil si necesita ampliar el número de tipos de clases diferentes por cualquier razón.

def check_class(x) 
    return true if is_string(x) 
    return true if is_integer(x) 
    # etc etc for possible class types 
    return false # Otherwise return false 
end 

def is_string(y) 
    y.is_a? String 
end 

def is_integer(z) 
    z.is_a? Integer 
end 


a = "string" 
puts "#{check_class(a)}" 
Cuestiones relacionadas