ああそういえば IO#map があるんだった。 read_data はこれでいい。
def read_data(filename)
File.open(filename) do |io|
io.map { |line| A.new(line) }
end
end
内部的な動作はほとんど変わらないと思うが。