Zakładając, że tablica jest po prostu numery (bez zobowiązań, które potencjalnie mają przecinki w nich), a następnie:
File.open(file,'w'){ |f| f << arr.map{ |row| row.join(',') }.join('\n') }
Jeden ogromny ciąg blatted na dysku, bez zaangażowania bibliotekę CSV.
Alternatywnie, przy użyciu biblioteki CSV do 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 }
Jeśli trzeba to robić często i kod przeszkadza, można monkeypatch go:
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)
Zobacz też: http://stackoverflow.com/questions/4822422/output-array-to-csv-in-ruby – Phrogz
To, co masz, jest już bardzo proste dla programisty. Czy jesteś (przedwcześnie) zaniepokojony wydajnością dodawania rzędów po jednym na raz? – Phrogz
@Phrogz Nie Nie martwię się o wydajność. Chcę ułatwić życie, ale nie jestem pewien, czy jest coś, czego mogę użyć, czy też będę musiał to zrobić sam. – texasbruce