【发布时间】:2017-06-03 22:25:08
【问题描述】:
我想创建一个方法,如果给定,则将一些 CSV 输出写入文件名,如果没有给出,则写入标准输出。
似乎我需要根据它是文件还是标准输出来不同地对待我对CSV 的调用,但我真的很想将输出流z 视为我可以写入但没有的东西无论是磁盘上的文件还是标准输出流。
这可能吗?
以下是我的尝试和错误:
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这样的通用名称。尤其是未使用的变量。