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 |