2011-07-06 24 views

Odpowiedz

90

Zakładam, że odwołujesz się do przypadku/kiedy.

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 

lub

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

EDIT

Coś, co być może nie każdy wie, ale co może być bardzo przydatne jest to, że można użyć wyrażeń regularnych w instrukcji case.

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

Wielkie dzięki. Czy mogę zamienić zmienną_zmienną na params [: id] w prawo? – glarkou

+0

Absolutnie, po prostu upewnij się, że porównujesz zmienne tego samego typu, np. "1" nie jest równe 1. Jednak "1" .to_i jest równe 1 (to_i konwertuje ciąg na liczbę całkowitą). Jeśli chcesz porównać parametry [: id] z liczbą całkowitą, musisz wykonać "case params [: id] .to_i". Dla mnie trochę dziwne testowanie params [: id] z "case", czy jesteś pewien co robisz? –

+0

Dzięki kolego. To było naprawdę pomocne. Myślę, że to był problem! – glarkou