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.
Overloading Methods | ||
---|---|---|
Code | Expected | Actual |
class Rectangle def initialize(*args) case args.size when 2 @top_left, @bottom_right = args when 3 @top_left, length, width = args @bottom_right = [@top_left[0] + length, @top_left[1] - width] else raise ArgumentError, "This method takes either 2 or 3 arguments." end # Perform additional type/error checking on @top_left and # @bottom_right... end end Rectangle.new([10, 23], [14, 13]) |
#<Rectangle:0x2d3098 @bottom_right=[14, 13], @top_left=[10, 23]> | #<Rectangle:0xb7c25aac @bottom_right=[14, 13], @top_left=[10, 23]> |
Rectangle.new([10, 23], 4, 10) |
#<Rectangle:0x2d0550 @bottom_right=[14, 13], @top_left=[10, 23]> | #<Rectangle:0xb7c229d8 @bottom_right=[14, 13], @top_left=[10, 23]> |
Rectangle.new |
ArgumentError: This method takes either 2 or 3 arguments. ... |
ArgumentError: This method takes either 2 or 3 arguments. from (irb):10:in `initialize' from (irb):18 |