먼저 해시는 이러한 종류의 데이터를위한 훌륭한 출발점입니다. 대신 :
LANGPROFICIENCY = [
["Elementary proficiency", 1],
["Limited working proficiency", 2],
["Professional working proficiency", 3],
["Full professional proficiency", 4],
["Native or bilingual proficiency", 5]
]
사용 : 당신은 개별적으로 필요로 할 때 편리하고, 별도로 당신이 원하는 경우 keys
또는 values
을 잡아 수 있습니다, 또는 당신이 보는 업 할 수있는 키를 찾을 수
LANGPROFICIENCY = {
"Elementary proficiency" => 1,
"Limited working proficiency" => 2,
"Professional working proficiency" => 3,
"Full professional proficiency" => 4,
"Native or bilingual proficiency" => 5
}
항상 같은 가치.
Hash[*LANGPROFICIENCY.to_a.map{ |a| a.reverse }.flatten]
반환합니다 :
{
1 => "Elementary proficiency",
2 => "Limited working proficiency",
3 => "Professional working proficiency",
4 => "Full professional proficiency",
5 => "Native or bilingual proficiency"
}
을 쉽게 역방향 조회를 수행 할 수있게
거기에서 당신은 해시를 취소 할 수 있습니다. 결과
LANGPROFICIENCY = LANGPROFICIENCY.merge(Hash[ *LANGPROFICIENCY.to_a.map{ |a| a.reverse }.flatten ])
:
{
"Elementary proficiency" => 1,
"Limited working proficiency" => 2,
"Professional working proficiency" => 3,
"Full professional proficiency" => 4,
"Native or bilingual proficiency" => 5,
1 => "Elementary proficiency",
2 => "Limited working proficiency",
3 => "Professional working proficiency",
4 => "Full professional proficiency",
5 => "Native or bilingual proficiency"
}
당신은 찾아 볼 수 있습니다 당신이 거기 안 충돌이있을 수 없습니다 알고 있다면
, 멀리 모든 것을 한 단계를 촬영 어느쪽으로 든, 앞으로 또는 뒤로.키 또는 값만 잡을 수있는 능력을 엉망으로 만들지 만 중간 단계 중 하나에서이를 해결할 수있는 방법을 찾아 낼 수 있습니다.
이 트릭을 항상 사용하거나이 테마를 변형합니다. 하나의 변수를 사용하여 앞뒤로 쉽게 매핑 할 수 있습니다.
이제 IRB 또는 Ruby에서 각 단계를 시도해 본 경우 "warning: already initialized constant LANGPROFICIENCY
"에 대한 여러 경고가 표시됩니다. 그 대답은 상수 대신에 변수를 사용하는 것입니다. 게다가, LANGPROFICIENCY는 거의 읽을 수있는 변수 이름입니다. lang_proficiency
또는 비슷한 것을 사용하는 것이 좋습니다.
LANGPROFICIENCY.flatten [2 * (value-1)]' –
@Jeff - 예프, 편집 됨 : –
perfecto .... 감사합니다! 흥미롭게도 – stewart715