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

只谈情不闲聊 提交于 2020-04-06 20:33:59
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

 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!