我有这个功能:
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|
。
出于某种原因,我没有办法做到这一点。