2017-05-22 17 views
0

해시 앞에 값을 추가하고 해시를 변경하려고합니다.해시 앞쪽에 값 추가 및 변경

과 같이

:

def put!(q,v) 
    q = {:value => v, :next => q} 
end 

을하지만 Q이 같은 새로운 값을 할당 할 수 없기 때문에이 작동하지 않습니다.

어떻게하면됩니까?

미리 답변 해 주셔서 감사합니다.

답변

0

수정하기 전에 :next 키의 해시 이미지가 있어야한다고 가정합니다. q 변경 사항을 반영 해시 너무 다른 참조가 변이 될 것 같이

def put!(q,v) 
    q[:value], q[:next] = v, q.dup 
end 

해시는 refrenced ...이 작업을 수행 할 수 있습니다.

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} 
:

일반적인 방법은 순서 상관하지하는 것