Struktura sterująca case

Witam.
Mam problem z instrukcją case. Gdy wpisuję z klawiatury parametr a (np. 2), czy jakąkolwiek inną cyfrę to zawsze wyświetla mi “pudlo”. Czy wina leży po stronie typów wprowadzanych danych (string)? Jakieś sugestie?


puts “podaj parametr a”
STDOUT.flush
a = STDIN.gets; a.to_i; a.chomp!

def warunek(a)
case a
when 0…10
print “cyfra”
else
print “pudlo”
end
end

warunek(a)

Pozdrawiam
Zami17

a = gets.chomp.to_i

[quote=Zami17]a = STDIN.gets; a.to_i; a.chomp!
[/quote]
Masz problem z tym kawałkiem kodu, instrukcje po średnikach interpreter traktuje jakby były w nowej linii, więc Twój kod jest równoważny takiemu:

a = STDIN.gets a.to_i a.chomp!
metoda “to_i” nie zmienia wartości obiektu, na rzecz którego została wywołana, tzn. jeżeli wywołujesz “a.to_i”, to obiekt “a” nie zostanie zmieniony na liczbę, tylko taka instrukacja zwróci liczbę, dlatego musiałbyś napisać:

a = a.to_i

A w skrócie, to najlepiej zrobić to tak jak @teac napisał, chciałem tylko wytłumaczyć dlaczego Twój kod działa tak a nie inaczej.

Dzięki za podpowiedzi