2011-07-06 38 views

Respuesta

90

Supongo que se refiere a casos/cuándo.

case a_variable # a_variable is the variable we want to compare 
when 1 #compare to 1 
    puts "it was 1" 
when 2 #compare to 2 
    puts "it was 2" 
else 
    puts "it was something else" 
end 

o

puts case a_variable 
when 1 
    "it was 1" 
when 2 
    "it was 2" 
else 
    "it was something else" 
end 

EDITAR

Algo que tal vez no todo el mundo conoce, pero lo que puede ser muy útil es que se puede utilizar expresiones regulares en una declaración de caso.

foo = "1Aheppsdf" 

what = case foo 
when /^[0-9]/ 
    "Begins with a number" 
when /^[a-zA-Z]/ 
    "Begins with a letter" 
else 
    "Begins with something else" 
end 
puts "String: #{what}" 
+0

Muchas gracias. ¿Puedo reemplazar una_variable con params [: id] verdad? – glarkou

+0

Absolutamente, solo asegúrese de que está comparando variables del mismo tipo, por ejemplo "1" no es igual a 1. Sin embargo, "1" .to_i es igual a 1 (to_i convierte una cadena en un entero). Si desea comparar params [: id] con un entero, debe hacer "case params [: id] .to_i". Me parece un poco extraño probar params [: id] con "case", ¿estás seguro de lo que estás haciendo? –

+0

Gracias amigo. Eso fue realmente útil. ¡Creo que ese fue el problema! – glarkou