I’m trying to write a script such that when you enter a year, you get
back a result of what occurred in this year or in the range of years, as
follows: http://pastie.org/private/0nibq5i7abwghydfu0yzg
The case is when I enter a year, I get the following:
sub.rb:3: undefined method `what_were_you_doing_on’ for main:Object
(NoMethodError)
But, the method is there. Why am I getting this?
Thanks.
On Tuesday 13 July 2010, Abder-Rahman A. wrote:
|
|Thanks.
Because you call the method (line 3) before defining it (line 6).
Define the
method before calling it and the error will disappear.
Stefano
year == 2001…2006
means is the variable ‘year’ is a range starting with 2001 up to and
including 2006
That is it expects that ‘year’ will be a range and not a fixnum.
What you need is something like this
if (2001…2006).include?(year)
On Jul 13, 2010, at 11:12 AM, Abder-Rahman A. wrote:
Order is important. The method definition has to be evaluated before
calling it.
If you put the call below the method definition, the call will work.
Regards,
Florian G.
Thanks for your replies. I changed the script to look as follows:
http://pastie.org/private/qwcmcpdzvxybm52s3ywxqg
But, I ALWAYS get “Out of range…”. Why is that?
Thanks.
Peter H. wrote:
year = gets
returns a string but your function requires a fixnum
so try
year = gets.to_i
this is one of the few times that you have to explicitly convert
types. It doesn’t happen alot in ruby and each time it catches me out
Thanks a lot Peter, that solves it. And, thanks for you other for your
replies.
On Jul 13, 2010, at 6:16 AM, Abder-Rahman A. wrote:
elsif (2007…2009).include?(year)
puts “MSc”
else
puts “Out of range…”
end
end
puts "Enter year "
year = gets
what_were_you_doing_on (year)
Because gets returns a string (which will still have a newline). So
you’re asking:
(2001…2006).include?(“2003\n”)
Try: year = gets.to_i
-Rob
Rob B.
[email protected] http://AgileConsultingLLC.com/
[email protected] http://GaslightSoftware.com/
Thanks Rob. Yes, the issue seemed .to_i wasn’t there.
year = gets
returns a string but your function requires a fixnum
so try
year = gets.to_i
this is one of the few times that you have to explicitly convert
types. It doesn’t happen alot in ruby and each time it catches me out