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

ExpandedBlockStart.gif 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

ExpandedBlockStart.gif 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

 


转载于:https://www.cnblogs.com/zhtf2014/archive/2010/06/27/1766219.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值