2010-10-08 69 views
0

所以即時嘗試在ruby中編寫一個簡單的定時器程序。我在「Timer」類中定義了我的方法,但是當我調用它們時,它給了我一個NoMethodError。任何想法爲什麼?謝謝您的幫助。在一個類中創建一個方法並在Ruby中使用它

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 

回答

1

你發送startstopgets的返回值,它是一個字符串,而不是一個計時器。

另外,您應該使用實例變量而不是全局變量來保存計時器值。而且你還需要創建一個Timer實例(或者將Timer變成一個模塊,但即使使用實例變量,而不是全局變量)。

+0

「$」沒有創建實例變量?我可以宣誓「@」成爲全球性的。我該如何創建一個「Timer實例」?你也應該注意到我是一個完整的新手,所以如果我聽起來像一個其原​​因,我:) – 2010-10-08 22:14:46

+0

@bipolarpants:你有它倒退。 '@ foo'是一個實例變量,'$ foo'是一個全局變量。不要擔心新事物 - 每個人都在某個時間或另一個時間。 – Chuck 2010-10-08 22:59:32

+0

哦好吧,謝謝。現在我得到它的工作,但我不得不在String類中創建一個方法「class String def to_t Timer.new end」,然後將它添加到「s = gets.to_t.start」那樣。有沒有辦法解決? – 2010-10-09 01:51:17

0

看起來你並沒有初始化一個類對象。所以要麼你需要有一個初始化方法,或者你可以在方法中引用這個類。

class Timer 

def self.start 
    $a = Time.now 
end 

def self.stop 
    Time.now - $a 
end 


end 
相關問題