红宝石的捷径?

时间:2012-08-15 09:51:58

标签: ruby

我有这个,它还会附加3或4个变量:

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

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

name, theme = row

但是,然后名称返回整行,在这种情况下似乎没有用。

我正在使用CSV.foreach,当我添加{headers:true}时,上面的内容无效:

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

  name # returns entire row in string
end

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:3)

万一你的行不是数组,请尝试调用

name, theme = Array row

name, theme = row.to_a

如果它没有to_s方法,你就要定义它。