해시 앞에 값을 추가하고 해시를 변경하려고합니다.해시 앞쪽에 값 추가 및 변경
과 같이:
def put!(q,v)
q = {:value => v, :next => q}
end
을하지만 Q이 같은 새로운 값을 할당 할 수 없기 때문에이 작동하지 않습니다.
어떻게하면됩니까?
미리 답변 해 주셔서 감사합니다.
해시 앞에 값을 추가하고 해시를 변경하려고합니다.해시 앞쪽에 값 추가 및 변경
과 같이:
def put!(q,v)
q = {:value => v, :next => q}
end
을하지만 Q이 같은 새로운 값을 할당 할 수 없기 때문에이 작동하지 않습니다.
어떻게하면됩니까?
미리 답변 해 주셔서 감사합니다.
수정하기 전에 :next
키의 해시 이미지가 있어야한다고 가정합니다. q
변경 사항을 반영 해시 너무 다른 참조가 변이 될 것 같이
def put!(q,v)
q[:value], q[:next] = v, q.dup
end
해시는 refrenced ...이 작업을 수행 할 수 있습니다.
나는 당신이 이제까지 이렇게 싶어 왜 아무 생각이 없지만, 여기 해시에 키 & 값 쌍을 앞에 추가하는 방법 :
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}
:
일반적인 방법은 순서 상관하지하는 것