我想在一个散列内存储一堆元素,但该键必须是当时的时间戳。我应该如何去做这样的事情?这是在纯粹的Ruby not Rails中。如何在Ruby中用键值存储历史记录(通过时间戳)?
-1
A
回答
2
这是做到这一点的一种方法:
class Store
def initialize()
@hash = {}
end
def add(data)
@hash[Time.now.to_f] = data
end
def to_s
@hash.to_s
end
end
new_store = Store.new
new_store.add("foo");
new_store.add("bar");
puts new_store.to_s
输出:
{1475565786.995899=>"foo", 1475565786.995907=>"bar"}
1
hash = (Class.new(Hash) do
def << value
tap { |this| this[Time.now.strftime("%Y-%m-%d %H:%M:%S.%6N")] = value }
end
end).new
hash << :foo
sleep 1
hash << :bar << :baz
hash
#⇒ {
# "2016-10-04 09:44:08.816475" => :foo,
# "2016-10-04 09:44:09.824107" => :bar,
# "2016-10-04 09:44:09.824125" => :baz
# }
NB:我downvoted的投入不遗余力的问题,而是回答了这个问题,因为该解决方案可能对未来的访问者有所帮助。
+0
非常好的解决方案。只是一个简单的问题:“自我[Time.now] =价值”比“self.tap”更糟? –
+0
@AndreyDeineko见'hash <<:bar <<:baz':连锁'<<'调用这个方法是返回'self'。 – mudasobwa
+0
绝对,没有想过这样 –
相关问题
- 1. 如何在SQL Server中的历史记录表中存储历史记录
- 2. Oracle记录历史使用范围内的时间戳
- 3. 在通知表中存储数据更改的历史记录
- 4. 如何在MySql时间戳中存储java日历时间?
- 5. MySQL的:使用日期时间或时间戳记录在历史
- 6. 如何组织在DB中存储历史记录的表?
- 7. 通过程序记录峰值和内存使用的历史记录?
- 8. 从Bitbucket导入存储历史记录?
- 9. 如何获取终端历史记录中每条命令行的时间戳?
- 10. 如何使用django-simple-history存储ManyToManyField的历史记录。
- 11. 如何从git存储库中删除旧的历史记录?
- 12. 如何在HTML5历史记录状态下存储功能
- 13. 如何按时间戳过滤记录
- 14. 如何通过短信在Android中发送呼叫记录历史记录?
- 15. 在DB中存储用户历史记录的最佳做法
- 16. 如何保存IEx历史记录?
- 17. 创建空目录时,Git是否存储历史记录?
- 18. 通过标记组合git repos保存历史记录
- 19. OS X运行时间历史记录
- 20. 在git中保存历史记录
- 21. 在iPhone中保存历史记录
- 22. iPhone通话记录/历史记录
- 23. 如何清除Android中的通话记录历史记录?
- 24. 在unix中有正确的时间戳的命令历史记录
- 25. 如何在memsql中存储时间戳?
- 26. 将Mercurial存储库的历史记录扩展为过去
- 27. GWT历史记录:历史记号
- 28. 如何存储数据的更改历史记录?
- 29. 如何迁移Git TFS Azure存储库和历史记录
- 30. 如何“审查”git存储库的历史记录?
'store || = {}; store [Time.zone.now_to_i] ='some info'' –
'Time#zone'返回一个'String'([link](http://ruby-doc.org/core-2.3.1/Time。 html#method-i-zone)),所以你不能将'now'应用到它。你可以做一个'Time.now.to_i',但这只会提供1秒的粒度。 OP需要指定他需要的时间戳的粒度。 – user1934428
然后使用'Time.now.to_f'获得粒度 – Tiago