我想在一個散列內存儲一堆元素,但該鍵必須是當時的時間戳。我應該如何去做這樣的事情?這是在純粹的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. 如何組織在DB中存儲歷史記錄的表?
- 5. 如何從git存儲庫中刪除舊的歷史記錄?
- 6. 如何按時間戳過濾記錄
- 7. 在DB中存儲用戶歷史記錄的最佳做法
- 8. 如何保存IEx歷史記錄?
- 9. 創建空目錄時,Git是否存儲歷史記錄?
- 10. 通過標記組合git repos保存歷史記錄
- 11. 在git中保存歷史記錄
- 12. iPhone通話記錄/歷史記錄
- 13. 如何清除Android中的通話記錄歷史記錄?
- 14. 將Mercurial存儲庫的歷史記錄擴展爲過去
- 15. 如何在memsql中存儲時間戳?
- 16. GWT歷史記錄:歷史記號
- 17. 如何存儲數據的更改歷史記錄?
- 18. 如何存儲和計算版本控制歷史記錄?
- 19. 可以將時間戳存儲在mysql歷史文件/root/.mysql_history中嗎?
- 20. 防止WPF框架在堆棧中存儲歷史記錄
- 21. 在Django模型字段中存儲位置歷史記錄
- 22. PHP每小時日曆,運行通過數據庫中存儲的時間戳
- 23. 通過Javascript小書籤保存瀏覽器歷史記錄
- 24. Subversion通過修訂版本分割存檔歷史記錄
- 25. 如何通過Unix時間戳降序排列MySQL記錄?
- 26. 如何通過時間戳返回最新記錄?
- 27. 如何訪問iPhone的通話記錄/歷史記錄
- 28. 如何通過API檢索Facebook鏈接共享歷史記錄?
- 29. 如何通過JavaScript將條目插入瀏覽歷史記錄
- 30. 如何通過DOS命令刪除Internet歷史記錄和Cookie
'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