 
 This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.
| Aliasing Methods | ||
|---|---|---|
| Code | Expected | Actual | 
| class InventoryItem
  attr_accessor :name, :unit_price
  def initialize(name, unit_price)  
    @name, @unit_price = name, unit_price
  end
  def price(quantity=1)
    @unit_price * quantity
  end
  #Make InventoryItem#cost an alias for InventoryItem#price
  alias :cost :price
  #The attr_accessor decorator created two methods called "unit_price" and
  #"unit_price=". I'll create aliases for those methods as well.
  alias :unit_cost :unit_price
  alias :unit_cost= :unit_price=
end
bacon = InventoryItem.new("Chunky Bacon", 3.95)
bacon.price(100) | 395.0 | 395.0 | 
| bacon.cost(100) | 395.0 | 395.0 | 
| bacon.unit_price | 3.95 | 3.95 | 
| bacon.unit_cost | 3.95 | 3.95 | 
| bacon.unit_cost = 3.99 bacon.cost(100) | 399.0 | 399.0 | 
| class Array alias :len :length end [1, 2, 3, 4].len | 4 | 4 | 
| class Array
  alias :length_old :length
  def length
    return length_old / 2
  end  
end
array = [1, 2, 3, 4]
array.length | 2 | 2 | 
| array.size | 4 | 4 | 
| array.length_old | 4 | 4 | 
| class Array alias :length :length_old end array.length | 4 | 4 | 
| class InventoryItem
  def cost(*args)
    price(*args)
  end
end
bacon.cost(100) | 399.0 | 399.0 | 
| require 'bigdecimal'
require 'bigdecimal/util'
class InventoryItem
  def price(quantity=1, sales_tax=BigDecimal.new("0.0725"))
    base_price = (unit_price * quantity).to_d
    price = (base_price + (base_price * sales_tax).round(2)).to_f
  end
end
bacon.price(100) | 427.93 | 427.93 | 
| bacon.cost(100) | 427.93 | 427.93 | 
| bacon.cost(100, BigDecimal.new("0.05")) | 418.95 | 418.95 |