我注意到 Ruby 中的 CSV 类有一些快捷接口(interface)(参见 http://ruby-doc.org/stdlib-1.9.3/libdoc/csv/rdoc/CSV.html ):
CSV { |csv_out| csv_out << %w{my data here} } # to $stdout
CSV(csv = "") { |csv_str| csv_str << %w{my data here} } # to a String
CSV($stderr) { |csv_err| csv_err << %w{my data here} } # to $stderr
CSV($stdin) { |csv_in| csv_in.each { |row| p row } } # from $stdin
有没有办法为我自己的类(class)做到这一点?我正在实现 DSL,这将使代码更加简洁。
最佳答案
这不是一个类。它是定义在 Object
上的一个方法(虽然也有一个同名的类 CSV
)。您链接的文档具有误导性。 This解释得更好。
你不能像使用模块那样做,但你可以定义一个接受 block 的方法。
关于Ruby:类接受一个 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16209343/