使用'each'有时是强制性的,有时不使用CSV

时间:2017-08-09 07:23:45

标签: ruby loops csv each

我在this web site之后使用csv gem。

评估CSV.parse后,必须使用each循环生成Array。这有效:

csv = CSV.parse("1,2,3")

csv.each {|row| print row, ", ", row.class, ", size ", row.size, "\n"}

虽然这不起作用:

csv {|row| print row, ", ", row.class, ", size ", row.size, "\n"}

直接使用表单CSV.parse时,使用each

CSV.parse("1,2,3").each {|row| print row, ", ", row.class, ", size ", row.size, "\n"}

与否:

CSV.parse("1,2,3") { |row| print row, ", ", row.class, ", size ", row.size, "\n"}

给出相同的结果。为什么呢?

1 个答案:

答案 0 :(得分:3)

这清楚地解释了in the documentation

    使用块调用时,
  • User会遍历行。
  • CSV::parse在没有块的情况下调用时会返回一个行数组(然后可以迭代)。