Подтвердить что ты не робот

Ruby - получение значения хэша

У меня есть хэш вроде

{:key1 => "value1", :key2 => "value2"}

И у меня есть переменная k, которая будет иметь значение как 'key1' или 'key2'.

Я хочу получить значение k в переменной v.

Есть ли способ достичь этого, используя if или case? Предпочтительным является однострочное решение. Пожалуйста, помогите.

4b9b3361

Ответ 1

Преобразуйте ключ из строки в символ и выполните поиск в хеше.

hash = {:key1 => "value1", :key2 => "value2"}
k = 'key1'

hash[k.to_sym] # or iow, hash[:key1], which will return "value1"

Rails использует этот класс под названием HashWithIndifferentAccess, что очень полезно в таких случаях. Я знаю, что вы только отметили свой вопрос Ruby, но вы могли украсть реализацию этого класса из источника Rails, чтобы избежать символа и символа символа, чтобы преобразовывать строки в вашу кодовую базу. Это делает ценность доступной с использованием символа или строки в качестве ключа.

hash = HashWithIndifferentAccess.new({:key1 => "value1", :key2 => "value2"})
hash[:key1]  # "value1"
hash['key1'] # "value1"