我想在哈希的前面添加一个值,我希望哈希变异。
像这样:
def put!(q,v)
q = {:value => v, :next => q}
end
但这不起作用,因为我无法为此分配q这样的新值。
我该怎么做?
提前感谢所有答案。
答案 0 :(得分:0)
我假设:next
键在修改之前应该具有哈希的图像。你可以这样做......
def put!(q,v)
q[:value], q[:next] = v, q.dup
end
哈希引用为q
将被改变,因此对哈希的其他引用将反映该更改。
答案 1 :(得分:0)
我不知道你为什么要这样做,但是这里有一种方法可以预先设置一个键和一个键。值对你的哈希值:
hash = {b: 2, c: 3}
hash_copy = hash.dup
hash.clear
hash[:a] = 1
hash_copy.each do |k,v|
hash[k] = v
end
p hash
# {:a=>1, :b=>2, :c=>3}
这很慢,有点无用:你需要复制哈希,删除所有键,添加一对,并将所有对都放回去。
通常的做法是不关心订单:
hash = {b: 2, c: 3}
hash[:a] = 1
p hash
# {:b=>2, :c=>3, :a=>1}