2013-06-19 3 views
0

Я новичок в рубин и не имеют большого опыта работы с хэшей, у меня есть переменная с именем твиты и это хэш, как, например:Как сохранить массив информации, поступающей из хэша в Рубине

{"statuses"=>[{"metadata"=>{"result_type"=>"recent", "iso_language_code"=>"tl"}, "lang"=>"tl"}]} 

Я хотел бы сохранить массив информации в виде отдельной переменной в массиве. Как я могу это сделать?

+0

Какой должен быть массив? –

+0

должен выглядеть так: [{"metadata" => {"result_type" => "recent", "iso_language_code" => "tl"}, "lang" => "tl"}] – cmart

+0

Думаю, вам стоит подумать сплющивание целого в другое .., это будет проще, чем массив. – sethi

ответ

0

Если у вас есть Hash так:

hash = {:numbers => [1,2,3,4]} 

И вам нужно, чтобы захватить массив в новую переменную. Вы можете просто получить доступ к ключу и назначить его на новую переменную следующим образом:

one_to_five = hash[:numbers] 

Однако, обратите внимание, что новая переменная фактически содержит массив, который находится в хэш. Таким образом, изменение массива hash изменяет массив новой переменной.

hash[:numbers] << 6 
puts one_to_five #=> [1,2,3,4,5,6] 

Если вы используете dup, это создаст копию массива, так что будет два отдельных массивов.

one_to_five = hash[:numbers].dup 
hash[:numbers] << 6 
puts one_to_five #=> [1,2,3,4,5] 

Таким образом, в вашем случае:

hash = {'statuses' => [{"metadata"=>{"result_type"=>"recent", "iso_language_code"=>"tl"}, "lang"=>"tl"}]} 
new_array = hash['statuses'].dup 

Однако, было бы интересно посмотреть, что это вы, желающий выполнить с вашим кодом, или, по крайней мере, получить немного больше контекста, потому что это не может быть лучшим подходом к вашей конечной цели. Есть много вещей, которые вы можете сделать с Arrays и HashesEnumerable), и я бы посоветовал вам прочитать документацию по ним.

1

Hash включают 2 очень хорошие методы,

hash.values 
hash.keys 

в вашем случае -

h = {"statuses"=>[{"metadata"=>{"result_type"=>"recent", "iso_language_code"=>"tl"}, "lang"=>"tl"}]} 
p h.values 
p.keys 

Эти выходные массивы каждого типа. Это может быть то, что вы хотите.

Кроме того, этот вопрос очень хорошо будет закрыт. 1 Поиск в Google сообщал о нескольких вопросах Hash to Array SO.

Ruby Hash to array of values
Converting Ruby hashes to arrays

+0

hash.values ​​не работает, потому что он создает новый массив массива. Я не могу иметь дополнительный массив – cmart

+0

через него! :) – sircapsalot

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