Creating a method in a class and using it in Ruby

197 views Asked by At

so im trying to write a simple timer program in ruby. I defined my methods in a "Timer" class but when I call them it gives me a NoMethodError. Any ideas why? Thanks for the help.

require "Time"
class Timer

 def start
  $a = Time.now

 end

def stop
Time.now - $a
end

end

puts "Type in 'Start'to to start the timer and then type 'Stop' to stop it"
s = gets.start
st = gets.stop
puts st
2

There are 2 answers

5
Chuck On BEST ANSWER

You're sending start and stop to the return value of gets, which is a String, not a Timer.

Also, you should use instance variables rather than globals to hold the timer value. And you'll also need to create a Timer instance (or turn Timer into a module, but use an instance variable even then, not a global).

0
Dom On

Looks like you're not initialising a class object. So either you need to have an initialise method or you can reference the class in the methods.

eg

class Timer

 def self.start
    $a = Time.now
 end

 def self.stop
    Time.now - $a
 end


end