Zauważyłem, że klasa CSV w Ruby ma kilka interfejsów skrótu (patrz http://ruby-doc.org/stdlib-1.9.3/libdoc/csv/rdoc/CSV.html):Ruby: klasa przyjmująca blok?
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
Czy istnieje sposób, aby to zrobić dla moich własnych klas? Wdrażam DSL, co znacznie uprości kod.
Dzięki za link "Udoskonalenie". –
Celem 'refine' jest kontrolowanie zakresu, w którym widoczny jest patch małpy. Ponieważ chcesz, aby te metody "CSV" były widoczne z każdego miejsca, nie ma sensu używać udoskonalenia. –