私は、Ruby 1.9でCSV :: Tableに行を追加しようとしています(質問はRuby 1.8のFasterCSVにも当てはまります)。新しい列の列の順序が表と異なる場合、ヘッダーが正しく指定されていても、要素は間違った列に追加されます。新しい行のヘッダーが無視されているかのように見えます。Ruby 1.9のCSV :: TableにCSV :: Rowを追加するときのヘッダーの意味は何ですか?
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
説明はありますか?新しい行を作成する前に列を並べ替える以外のことができますか?
あなたのパッチはうまくいきます。 Davidsの答えに私のコメントも見てください。 – Stefan