23
의 점점 값이 나는루비 - 해시
{:key1 => "value1", :key2 => "value2"}
같은 해시를하고 난 'key1'
또는 'key2'
같은 값을가집니다 변수 k
있습니다.
k
의 값을 변수 v
에 가져 오려고합니다.
if
또는 case
을 사용하여이 문제를 해결할 수있는 방법이 있습니까? 단일 회선 솔루션이 바람직합니다. 도와주세요.
의 점점 값이 나는루비 - 해시
{:key1 => "value1", :key2 => "value2"}
같은 해시를하고 난 'key1'
또는 'key2'
같은 값을가집니다 변수 k
있습니다.
k
의 값을 변수 v
에 가져 오려고합니다.
if
또는 case
을 사용하여이 문제를 해결할 수있는 방법이 있습니까? 단일 회선 솔루션이 바람직합니다. 도와주세요.
키를 문자열에서 심볼로 변환하고 해시에서 조회를 수행합니다.
hash = {:key1 => "value1", :key2 => "value2"}
k = 'key1'
hash[k.to_sym] # or iow, hash[:key1], which will return "value1"
레일은 이러한 경우에 매우 유용하다는 것을 증명 HashWithIndifferentAccess
이라는 클래스를 사용합니다. 루비에 대한 질문 만 태그를 붙 였지만, Rails의 소스에서이 클래스의 구현을 훔쳐서 코드와 문자열을 코드베이스의 문자열 변환으로 피할 수있었습니다. 기호 나 문자열을 키로 사용하여 값에 액세스 할 수있게합니다.
hash = HashWithIndifferentAccess.new({:key1 => "value1", :key2 => "value2"})
hash[:key1] # "value1"
hash['key1'] # "value1"