0

我正在构建一个 CSV 对象,并且我有一组动态的标题项。我按如下方式构建此“标题”行:

headers = ["name", "email"]
questions.each do |q|
  headers << q
end
csv << headers

虽然这工作得很好,但我想做的是在一行中调用,而不必先添加headers变量。

所以像:

csv << ["name", "email", questions.each { |q| q }]

显然上面的方法不起作用,因为它each返回了“问题”数组。

有什么建议么?

4

5 回答 5

2
csv << headers + questions
于 2013-09-18T08:43:21.780 回答
1

如下使用 splat 运算符。

csv << ["name", "email", *questions]
于 2013-09-18T08:41:59.303 回答
1

有几种方法可以做到这一点。我会使用这样的东西:

headers = (['name', 'email'] << questions).flatten

请参阅此问题以获得更详细的答案,以及关于性能:如何在 Ruby 中将一个数组添加到另一个数组而不是得到多维结果?

于 2013-09-18T08:46:10.210 回答
1

只需使用Array#+

csv << ["name", "email"] + questions

或者更短一点:

csv << %w(name email) + questions
于 2013-09-18T08:43:55.557 回答
0
["name", "email", *questions.map { |q| q }]

map返回结果数组

于 2013-09-18T08:41:44.740 回答