私はこの機能を持っています:
def file_parser (filename)
Enumerator.new do |yielder|
File.open(filename, "r:ISO-8859-1") do |file|
csv = CSV.new(file, :col_sep => "\t", :headers => true, :quote_char => "\x07")
csv.each do |row|
yielder.yield map_fields(clean_data(row.to_hash))
end
end
end
end
次のように使用できます。
parser = file_parser("data.tab")
parser.each do { |data| do_profitable_things_with data }
代わりに、それを独自のクラスに入れて、次のように使用したいと思います。
parser = SpecialParser.new("data.tab")
parser.each do { |data| do_profitable_things_with data }
initialize()
、およびから列挙子を返すだけのように、うまくいくとは思わなかったいくつかのことを試しましたself = file_parser()
。
私も試しsuper do |yielder|
ました。
どういうわけか、これを行う方法が私に来ていません。