Печать массива Ruby

У меня есть массив объектов (узлы nokogiri xml), и каждый узел имея name и value. Я хочу напечатать их в формате name=value без повторения цикла for.

если я использую arr * "," я могу видеть только значения, как показано ниже

4900.00,5.00,0.00,-100.00,100.00
6085.00,5.00,1285.00,1185.00,100.00
6015.00,5.00,30.00,-70.00,100.00
5915.00,5.00,0.00,-100.00,100.00
5815.00,5.00,0.00,-100.00,100.00

Есть ли что-то, что можно сделать здесь.


person Manoj    schedule 18.11.2011    source источник
comment
@LBg ставит arr возвращает только значения   -  person Manoj    schedule 18.11.2011
comment
У вас есть пример кода, чтобы показать, что вы делаете?   -  person the Tin Man    schedule 19.11.2011


Ответы (2)


Предполагая, что ваши узлы Nokogiri имеют атрибуты name и value (а не дочерние элементы), вот один из способов:

# Convert the array into a new array of strings
namevals = my_array.map{ |node| "#{node['name']}=#{node['value']}" }

# See it with space delimiters
puts namevals.join(' ')

Возможно полезная альтернатива:

# Create a hash mapping unique names to values
namevals = Hash[ my_array.map{ |node| [ node['name'], node['value'] } ]
person Phrogz    schedule 18.11.2011

Что-то вроде этого должно работать:

array.each do |n|
  puts "#{n.name}=#{n.value}"
end
person David Grayson    schedule 18.11.2011
comment
Да, я делаю что-то подобное, думаю, я не могу ожидать большего от массива, не меняя to_s объекта в массиве. - person Manoj; 18.11.2011
comment
Вы можете использовать collect для преобразования массива перед его отображением. - person tadman; 18.11.2011