Supponendo che l'array è solo numeri (senza le stringhe che hanno potenzialmente virgole in loro), allora:
File.open(file,'w'){ |f| f << arr.map{ |row| row.join(',') }.join('\n') }
Un enorme stringa blatted su disco, senza che coinvolge la libreria CSV.
In alternativa, utilizzando la libreria CSV per correctly escape each row:
require 'csv'
# #to_csv automatically appends '\n', so we don't need it in #join
File.open(file,'w'){ |f| f << arr.map(&:to_csv).join }
Se dovete fare questo, spesso e il codice che dà fastidio, si potrebbe monkeypatch in:
class CSV
def self.dump_array(array,path,mode="rb",opts={})
open(path,mode,opts){ |csv| array.each{ |row| csv << row } }
end
end
CSV.dump_array(arr,file)
Vedi anche: http://stackoverflow.com/questions/4822422/output-array-to-csv-in-ruby – Phrogz
Quello che hai è già abbastanza facile per te il programmatore. Sei (prematuramente) preoccupato per l'esecuzione di aggiungere le righe una alla volta? – Phrogz
@Phrogz No Non mi preoccupo delle prestazioni. Voglio rendere la vita più facile, ma non sono sicuro se c'è già qualcosa che posso usare o dovrò farlo io stesso. – texasbruce