Giả sử rằng mảng của bạn chỉ là con số (không dây có khả năng có dấu phẩy trong họ) thì:
File.open(file,'w'){ |f| f << arr.map{ |row| row.join(',') }.join('\n') }
Một chuỗi khổng lồ blatted vào đĩa, không có sự tham gia của các thư viện CSV.
Ngoài ra, sử dụng thư viện CSV để 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 }
Nếu bạn phải làm điều này thường xuyên và mã phiền bạn, bạn có thể monkeypatch nó trong:
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)
Xem thêm: http://stackoverflow.com/questions/4822422/output-array-to-csv-in-ruby – Phrogz
Những gì bạn có đã khá darn dễ dàng cho bạn lập trình viên. Bạn có (sớm) lo lắng về hiệu suất của việc thêm các hàng một tại một thời điểm? – Phrogz
@Phrogz Không, tôi không lo lắng về hiệu suất. Tôi muốn làm cho cuộc sống dễ dàng hơn nhưng không chắc chắn nếu đã có một cái gì đó tôi có thể sử dụng hoặc tôi sẽ phải làm điều đó bản thân mình. – texasbruce