2016-10-26 2 views
0

Ruby에는 단일 쌍 해시 (예 : {:foo => 'bar'})를 사용하고 키와 값을 두 개의 변수로 분리 할 수있는 방법이 포함되어 있습니까? 이 작업을 수행하는 작은 방법을 작성했지만 Ruby가 이미 수행 할 수있는 경우 중복되지 않기를 바랍니다. 아래에 제공된 냅킨 코드.단일 쌍 해시를 해당 키와 값으로 분할합니까?

def split_hash hash 
    key = hash.keys.first 
    key, hash[key] 
end 

사용법 :

hash = {:foo => 'bar'} 
foo, bar = split_hash hash 
# Expected: foo = :foo, bar = 'bar' 

답변

5

이이

key, value = hash.first 
+0

그것은 지긋 지긋합니다. 고맙습니다! – Argus9

2

당신은 적어도 루비 v1.9.3 이후 주변왔다 Hash#flatten를 사용할 수 있습니다 할 수 있습니다. Array#flatten과 달리 재귀 적으로 병합되지는 않습니다.

hash = { foo: ['bar', 'boo'] } 

foo, bar = hash.flatten 
    #=> [:foo, ["bar", "boo"]] 

나는 (루비 V1.9 이후) 해시의 키를 삽입 순서를 유지 것이라는 점을 알고 도움이되었다 상황이 발생했습니다. 그러나 이상한 일이기 때문에 질문자는 주요 주문에 의존하지 않는 디자인이 좋지 않은 지 확인하기 위해 코드를 검토하는 것이 좋습니다.

+1

가져 가라. @Sergio! 처음 대답을 보았을 때 나는 그것이 유일한 짧은 대답이라고 생각했지만 도전을 제공했습니다. (나는 아직도 너의 것을 좋아한다.) –

+0

나는 오늘 뭔가를 배웠다 :) –

관련 문제