2017-01-27 6 views
0

У меня есть хэш, который выглядит следующим образом:Получение конкретного значения из вложенного Hash в Рубине

get_fru = 
    {"default_fru_device"=> 
    {:name=>"default_fru_device", 
    "chassis_type"=>"Other", 
    "board_manufacturer"=>"IBM", 
    "product_name"=>"System x3650 M4" 
    } 
    } 

Я знаю, что если я хочу, чтобы получить значение product_name, я мог бы просто сделать get_fru["default_fru_device"]["product_name"], который бы, в этом пример, возврат System x3650 M4.

Однако, если бы я хотел получить значения IBM и System x3650 M4 и сделать их отображаемыми в виде одной строки, которая указала IBM System x3650 M4, как бы я мог добиться этого?

+0

Вы хотите конкатенации строк в Ruby? Если это так, вы можете использовать '' # {get_fru ["default_fru_device"] ["board_manufacturer"]} # {get_fru ["default_fru_device"] ["product_name"]} "' – mrlew

+0

Спасибо, но есть ли более чистый способ достичь этого ? – Wes

+0

«Система» отсутствует в строке. Планируется ли это? –

ответ

2

Вы можете использовать Hash#values_at и Array#join:

get_fru["default_fru_device"].values_at('board_manufacturer', 'product_name').join(' ') 
#=> "IBM System x3650 M4" 
+0

Спасибо - приятно и чисто. Это то, что я искал. – Wes

Смежные вопросы