Ruby 中的 CSV 对象.它们到底是什么



所以我有这段代码:

data = CSV.open(filename, headers: true, header_converters: :symbol)
    @contents = data.map

文件名是文件的路径,指的是我计算机上的实际文件。

我的问题是我命名数据的 CSV 对象到底是什么?如何映射对象?

当我使用pry调试时,我看到这个:

[1] pry(#<Session>)> data  
=> <#CSV io_type:File io_path:"./data/event_attendees.csv" encoding:UTF-8 lineno:2 col_sep:"," row_sep:"n" quote_char:""" headers:[:_, :regdate, :first_name, :last_name, :email_address, :homephone, :street, :city, :state, :zipcode]>  
[2] pry(#<Session>)> row 
CSV::Row _:"1" regdate:"11/12/08 10:47" first_name:"Allison" last_name:"Nguyen" email_address:"arannon@jumpstartlab.com" homephone:"6154385000" street:"3155 19th St NW" city:"Washington" state:"DC" zipcode:"20010"

因此,数据似乎指的是CSV对象而不是数组。行似乎引用了 CSV 对象的某些属性?

无论哪种方式,我以前从未在对象上看到过方法图。这是怎么回事?

map适用于包含Enumerable mixin的任何对象。为了使用Enumerable,类需要提供each - 这是所有其他好方法的基础。CSV类的对象符合此模式,如该类的文档所示。

(它不将其直接推送到数组中的原因是,能够逐行读取输入文件,而不必在对其进行任何操作之前将整个内容存储在内存中,这很好。

最新更新