我有一个Ruby哈希:
@tags = { "project_status" => { "title" => "Project status" },
"milestones" => { "title" => "Milestones"},
"lessons" => { "title" => "Lessons"},
"tasks" => { "title" => "Tasks"} }
我想从这个哈希中shift
特定的键值对。例如,如果我对"milestones"
标签感兴趣,那么哈希shift
会给我:
=> ["milestones", {"title"=>"Milestones"}]
这正是我想要的。
除了我无法弄清楚如何选择特定的键值对。
我可以写一些东西来迭代哈希,直到找到匹配的键,然后调用shift
,但我假设有一种更干净的"Ruby 方式"来做到这一点:)
delete
可能是您要查找的。它从哈希中删除相应的键(而shift
从数组中删除项目)
tags = { "project_status" => { "title" => "Project status" },
"milestones" => { "title" => "Milestones"},
"lessons" => { "title" => "Lessons"},
"tasks" => { "title" => "Tasks"} }
def shift hash, key
[key, hash.delete(key)] # removes key/value pair
# [key, hash[key]] # leaves key/value pair
end
shift tags, 'milestones' # => ["milestones", {"title"=>"Milestones"}]
tags # => {"project_status"=>{"title"=>"Project status"}, "lessons"=>{"title"=>"Lessons"}, "tasks"=>{"title"=>"Tasks"}}