我想知道如果没有迭代整个哈希值,这样的事情是否可行:
collection = { red: 1000, green: 120, "yellow" => 1, blue: 999 }
这样的事情:
collection.next_key(:red) #Should return :green
collection.prev_key(:blue) #Should return "yellow"
编辑:: 我希望以某种方式访问内部Ruby Hash数据结构的fore
和back
成员:
struct st_table_entry {
unsigned int hash;
st_data_t key;
st_data_t record;
st_table_entry *next;
st_table_entry *fore, *back; // new in Ruby 1.9
};
(Source)
答案 0 :(得分:2)
我认为它会起作用
class Hash
def next_key(key)
self.keys[self.keys.find_index(key) + 1]
end
def prev_key(key)
self.keys[self.keys.find_index(key) - 1]
end
end
但请记住,Hash
是{{1}},所以项目的顺序可能与您编写的顺序不同。