![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1
class
BookInStock
2 attr_reader :isbn
3 attr_accessor :price
4 def initialize(isbn, price)
5 @isbn = isbn
6 @price = Float(price)
7 end
8
9 def to_s()
10 " ISBN: #{@isbn}, Price: #{@price} "
11 end
12 end
13
14 b1 = BookInStock.new( " aa " , 3 )
15 p b1
16 b2 = BookInStock.new( " bb " , 2.3 )
17 p b2
18 b3 = BookInStock.new( " cc " , " 5.67 " )
19 puts b3
20 puts " ISBN: #{b1.isbn} "
2 attr_reader :isbn
3 attr_accessor :price
4 def initialize(isbn, price)
5 @isbn = isbn
6 @price = Float(price)
7 end
8
9 def to_s()
10 " ISBN: #{@isbn}, Price: #{@price} "
11 end
12 end
13
14 b1 = BookInStock.new( " aa " , 3 )
15 p b1
16 b2 = BookInStock.new( " bb " , 2.3 )
17 p b2
18 b3 = BookInStock.new( " cc " , " 5.67 " )
19 puts b3
20 puts " ISBN: #{b1.isbn} "
book_in_stock.rb
1
class
BookInStock
2 attr_reader :isbn, :price
3 def initialize(isbn, price)
4 @isbn = isbn
5 @price = Float(price)
6 end
7 end
2 attr_reader :isbn, :price
3 def initialize(isbn, price)
4 @isbn = isbn
5 @price = Float(price)
6 end
7 end
csv_reader.rb
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1
require
'
csv
'
2 require_relative ' book_in_stock '
3 class CsvReader
4 def initialize
5 @books_in_stock = []
6 end
7 def read_in_csv_data(csv_file_name)
8 CSV.foreach(csv_file_name, headers: true) do | row |
9 @books_in_stock << BookInStock.new(row[ " ISBN " ], row[ " Amount " ])
10 end
11 end
12 def total_value_in_stock
13 sum = 0.0
14 @books_in_stock.each { | book | sum += book.price}
15 sum
16 end
17 def number_of_each_isbn
18 # ...
19 end
20 end
2 require_relative ' book_in_stock '
3 class CsvReader
4 def initialize
5 @books_in_stock = []
6 end
7 def read_in_csv_data(csv_file_name)
8 CSV.foreach(csv_file_name, headers: true) do | row |
9 @books_in_stock << BookInStock.new(row[ " ISBN " ], row[ " Amount " ])
10 end
11 end
12 def total_value_in_stock
13 sum = 0.0
14 @books_in_stock.each { | book | sum += book.price}
15 sum
16 end
17 def number_of_each_isbn
18 # ...
19 end
20 end
stock_stats.rb
require_relative
'
csv_reader
'
reader = CsvReader.new
ARGV.each do | csv_file_name |
STDERR.puts " Processing #{csv_file_name} "
reader.read_in_csv_data(csv_file_name)
end
puts " Total value = #{reader.total_value_in_stock} "
reader = CsvReader.new
ARGV.each do | csv_file_name |
STDERR.puts " Processing #{csv_file_name} "
reader.read_in_csv_data(csv_file_name)
end
puts " Total value = #{reader.total_value_in_stock} "
1
ruby stock_stats.rb test.csv
2
3 Processing test.csv
4 Total value = 122.07
2
3 Processing test.csv
4 Total value = 122.07