1

我有这个,它将附加另外 3 或 4 个变量:

name, theme = row[0], row[1]

右边的代码有快捷方式吗?我试过:

name, theme = row

但是随后 name 返回了整行,在这种情况下似乎不起作用。

我正在使用 CSV.foreach,当我添加 {headers: true} 时,上述内容不起作用:

CSV.foreach('file.csv', {headers: true}) do |row|
  name, theme = row

  name # returns entire row in string
end
4

2 回答 2

3

name, theme = row没关系。

irb(main):001:0> row = [1,2,3]
=> [1, 2, 3]
irb(main):002:0> first,second = row
=> [1, 2, 3]
irb(main):003:0> first
=> 1
irb(main):004:0> second
=> 2
于 2012-08-15T09:55:45.497 回答
3

以防万一您的行不是数组,请尝试调用

name, theme = Array row

或者

name, theme = row.to_a

如果它没有 to_a 方法,你必须定义它。

于 2012-08-15T10:01:57.827 回答