我试图通过以下值搜索此哈希值:user
cache = {
{:user=>1}=>{:last_visit=>2014-01-25 09:22:42 -0800, :frequency=>0},
{:user=>2}=>{:last_visit=>2014-01-25 09:22:43 -0800, :frequency=>0},
{:user=>3}=>{:last_visit=>2014-01-25 09:22:43 -0800, :frequency=>0}
}
Run Code Online (Sandbox Code Playgroud)
我尝试了很多东西,包括下面但我总是没有
new_user = cache.select{|key, hash| hash[:user] == user }
new_user = cache.invert[:user=>user]
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
请执行以下操作
cache = {{:user=>1}=>{:last_visit=>'2014-01-25 09:22:42 -0800', :frequency=>0}, {:user=>2}=>{:last_visit=>'2014-01-25 09:22:43 -0800', :frequency=>0}, {:user=>3}=>{:last_visit=>'2014-01-25 09:22:43 -0800', :frequency=>0}}
cache.select{|key_hash,value_hsh| key_hash[:user] == 2 }
# => {{:user=>2}=>{:last_visit=>"2014-01-25 09:22:43 -0800", :frequency=>0}}
Run Code Online (Sandbox Code Playgroud)
您的cache
哈希值具有键和值,其中键也是哈希值,值也是哈希值.符号:user
是哈希的键哈希的键cache
.在您的代码中cache.select{|key, hash| hash[:user] == user }
,您:user
在值哈希中搜索键,而不是键哈希.
现在根据文件Hash#[]
-
元素引用 - 检索与键对象对应的值对象.如果未找到,则返回
nil
(如果未设置默认值,则为默认值).
所以在你的情况下hash[:user]
总是返回nil
.因此cache.select { .. }
总是返回空数组.
归档时间: |
|
查看次数: |
63 次 |
最近记录: |