хранение хэша в рубине - PullRequest
       1

хранение хэша в рубине

0 голосов
/ 19 августа 2010

Я хочу взять текущее время и сохранить его в хэше, а затем при повторной проверке сравнить текущее время с сохраненным.

t1 =Time.now
time = "#{t1.hour}" + "#{t1.min}" + "#{t1.sec}"
oldtime = Hash.new(time)
puts "Old time is #{oldtime}"
puts "Current is #{time}"

Спасибо за вашу помощь!

Ответы [ 3 ]

0 голосов
/ 19 августа 2010

Зачем конвертировать в строку?Вы вводите ошибки, так как время 10:05:02 преобразуется с вашим кодом в «1052».

Вместо этого, непосредственно сохраняйте объект времени:

timestamps = {}
timestamps['old'] = Time.now
... more code ...
timestamps['new'] = Time.now

puts "Old time is: " + timestamps['old'].to_s
puts "New time is: " + timestamps['new'].to_s

Если вы хотитесравнить временные метки, вы можете использовать оператор космического корабля, как:

timestamps['old'] <=> timestamps['new']
0 голосов
/ 19 августа 2010
last_filetime = nil
while true
  filetime = file.timestamp
  call_other_process if last_filetime and filetime != last_filetime
  last_filetime = filetime
  pause 10
end

Помогает ли это?

0 голосов
/ 19 августа 2010

Ваши t1 и time переменные не изменятся.Time.now дает вам снимок текущего времени, но с течением времени предыдущие переменные, которым было присвоено значение Time.now, будут по-прежнему иметь то же значение, что и при их установке.Помещение значения времени в хэш не будет иметь никакого значения.

Если вы захотите проверить время позже, вам придется снова получить Time.now.

t1 = Time.now
# ... time passes
t2 = Time.now

# Now you can compare t2 to t1 to see how much time elapsed.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...