我正在運行此代碼,它顯示同一時間,但我想要不同的日期,所以我把睡眠,所以它會改變10秒鐘的時間。全局變量不改變2個不同函數的時間值
但並沒有改變@date_format
r=Time.now
@date_format = r
def self.asd
puts @date_format
sleep 10
end
def self.asd1
puts @date_format
end
我怎麼能這樣做?
我正在運行此代碼,它顯示同一時間,但我想要不同的日期,所以我把睡眠,所以它會改變10秒鐘的時間。全局變量不改變2個不同函數的時間值
但並沒有改變@date_format
r=Time.now
@date_format = r
def self.asd
puts @date_format
sleep 10
end
def self.asd1
puts @date_format
end
我怎麼能這樣做?
這裏有一個方法可以爲你工作:
>> @date_format = lambda { Time.now }
=> #<Proc:[email protected](irb):5 (lambda)>
>> @date_format.call
=> 2011-12-21 11:20:35 -0500
>> @date_format.call
=> 2011-12-21 11:20:39 -0500
希望它能幫助!
如果您想要更改時間,則必須每次分配Time.now
。你在@date_format裏面有什麼是返回值,而不是方法。
這應該工作:
def self.asd
puts Time.now
sleep 10
end
def self.asd1
puts Time.now
end
編輯
更多鈔票的解決你的問題上意見:
class Test
@date_format
def self.date_format
@date_format = Time.now
end
def self.date_format=value
@date_format = value
end
end
您可以使用它的話,像這樣:Test.date_format
,每次你調用這個方法,你會得到新的時間,它會更新變量。
讓我知道是否有幫助。
設置'@ date_format'的代碼在哪裏?除非它被更新,否則它不會改變 - 它不會被神奇地重新評估。 – 2011-12-21 16:13:09
代碼就是這樣。我如何重新評估@date_format? – macwadu 2011-12-21 16:17:36
通過調用一個方法,或者只是調用'Time.now'。如果下一次你想要一個不同的值,存儲一個值有什麼意義? – 2011-12-21 16:21:07