我正在运行此代码并显示相同的时间,但我想要不同的日期,所以我把睡眠所以它会在10秒内改变时间。
但是没有改变@date_format
r=Time.now
@date_format = r
def self.asd
puts @date_format
sleep 10
end
def self.asd1
puts @date_format
end
我该怎么办?
答案 0 :(得分:2)
以下是一种可能适合您的方法:
>> @date_format = lambda { Time.now }
=> #<Proc:0x007fdaa4800b98@(irb):5 (lambda)>
>> @date_format.call
=> 2011-12-21 11:20:35 -0500
>> @date_format.call
=> 2011-12-21 11:20:39 -0500
希望它有所帮助!
答案 1 :(得分:1)
如果您想要更改时间,则必须每次都指定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
并且每当您调用该方法时,您将获得新时间并且它将更新变量。
如果有帮助,请告诉我。