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.
Extending Specific Objects with Modules (written by Phil Tomson) | ||
---|---|---|
Code | Expected | Actual |
class Person attr_reader :name, :age, :occupation def initialize(name, age, occupation) @name, @age, @occupation = name, age, occupation end def mild_mannered? true end end jimmy = Person.new('Jimmy Olsen', 21, 'cub reporter') clark = Person.new('Clark Kent', 35, 'reporter') jimmy.mild_mannered? |
true | true |
clark.mild_mannered? |
true | true |
module SuperPowers def fly 'Flying!' end def leap(what) "Leaping #{what} in a single bound!" end def mild_mannered? false end def superhero_name 'Superman' end end clark.extend(SuperPowers) clark.superhero_name |
"Superman" | "Superman" |
clark.fly |
"Flying!" | "Flying!" |
clark.mild_mannered? |
false | false |
jimmy.mild_mannered? |
true | true |
class Person extend SuperPowers end #which is equivalent to: Person.extend(SuperPowers) Person.superhero_name |
"Superman" | "Superman" |
Person.fly |
"Flying!" | "Flying!" |