我正在尝试向 Ruby 1.9 中的 CSV::Table 添加一行(这些问题也适用于 Ruby 1.8 中的 FasterCSV)。如果新行中的列顺序与表中的不同,则即使正确指定了标题,元素也会添加到错误的列中。看起来好像新行中的标题被忽略了。
require 'csv'
first_row = CSV::Row.new(["h1","h2","h3"],[1,2,3])
second_row = CSV::Row.new(["h2","h1","h3"],[2,1,3]) # note the change in order
table = CSV::Table.new([first_row])
table << second_row
puts table.to_s
输出:
h1,h2,h3
1,2,3
2,1,3
但由于我明确指定了标题,我希望 CSV 将新行的标题与表的标题相匹配并产生以下输出:
h1,h2,h3
1,2,3
1,2,3
有什么解释吗?除了在创建新行之前自己重新排序列之外,我还能做些什么吗?