与えられた場合はファイル名にCSV出力を、与えない場合はstdoutに書き込むメソッドを作りたい。標準出力またはファイル名にCSVを書き込む
私はそれがファイルだかstdoutに、私は本当に私がそれだかどうかに持っているに書き込むことができず、何かのように出力ストリームz
を処理したい場合に応じて異なるCSV
に自分のコールを処理する必要があるように思えディスク上のファイルまたはstdoutストリーム。
これは可能ですか?以下は
私の試みとエラーである:それはIOオブジェクトではありませんので、
require 'csv'
require 'pathname'
require 'csv'
require 'pathname'
def write_to_csv_or_stdout foo, bar, z=nil
z = Pathname.new(z) if z
z ||= $stdout
res = [[foo, bar, "baz"]]
CSV(z) do |csv|
res.each do |row|
csv << row
end
end
end
write_to_csv_or_stdout "foo", "bar"
# foo
# bar
#=> foo,bar,baz
# write_to_csv_or_stdout "foo", "bar", "baz"
# (NoMethodError)
あなたの目標は何ですか? 'some_method'、' x'、 'y'、' z'のような一般的な名前は使わないでください。特に未使用変数がある。 –