Ray's playground

 

Classes, Objects, and Variables(Chapter 3 of Programming Ruby)

class
 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}"

 

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

 

 

csv_reader.rb

csv_reader.rb
 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

 

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}"


1 ruby stock_stats.rb test.csv
2 
3 Processing test.csv
4 Total value = 122.07

 


posted on 2010-06-27 16:44  Ray Z  阅读(152)  评论(0编辑  收藏  举报

导航