2014-01-27 3 views
-1

Как оптимизировать код ниже на один или пару шагов. Есть ли какой-либо метод массива, который можно сделать ниже?Оптимизация кода в рубиновом массиве

a=[1,2,3,4,5,6,7,8] 
a.each_slice(2).to_a.each do |nested_arr| 
    nested_arr.each do |val| 
    row << val 
    end 
    csv << row #sample csv object showed here to explain. 
end 

Основная идея это, избежать вставки массивов данных в один файл CSV

+0

«Не вставлять массовые данные в один файл csv» Итак ... вы хотите разбить данные на несколько файлов csv? Что вы пытаетесь спросить здесь? – Ajedi32

ответ

2

Do, как показано ниже:

a=[1,2,3,4,5,6,7,8] 
a.each_slice(2) do |nested_arr| 
    csv.puts(nested_arr) # considering csv is a CSV object. 
end 

Enumerable#each_slice принимает блок, поэтому нет необходимости to_a.each часть в делать с a.each_slice(2). Затем используйте методы CSV#puts для вставки данных в объект csv.

Я не знаю, как вы создали объекты csv. Итак, вот мой подход:

require 'csv' 

path = "C:\\Users\\test.csv" 
a=(1..8).to_a 
CSV.open(path,"w") do |csv| 
    a.each_slice(2) do |nested_arr| 
     csv.puts(nested_arr) 
    end 
end 
Смежные вопросы