5

Ruby の CSV クラスにはいくつかのショートカット インターフェイスがあることに気付きました ( 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

自分のクラスでこれを行う方法はありますか? 私は DSL を実装しています。これにより、コードがよりクリーンになります。

4

2 に答える 2

6

クラスではありません。上で定義されたメソッドですObject(同名で呼ばれるクラスもありますがCSV)。リンクしたドキュメントは誤解を招くものです。これはそれをよりよく説明します。

モジュールでそのようにすることはできませんが、ブロックを取るメソッドを定義することはできます。

于 2013-04-25T08:03:26.733 に答える