 
 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.
| Getting a Reference to a Method | ||
|---|---|---|
| Code | Expected | Actual | 
| s = 'A string'
length_method = s.method('length') | #<Method: String#length> | #<Method: String#length> | 
| length_method.arity | 0 | 0 | 
| length_method.call | 8 | 8 | 
| 1.succ | 2 | 2 | 
| 1.method(:succ).call | 2 | 2 | 
| 5.method('+').call(10) | 15 | 15 | 
| [1,2,3].method(:each).call { |x| puts x } | 1 2 3 | 1 2 3 | 
| class EventSpawner
  def initialize
    @listeners = []
    @state = 0
  end
  def subscribe(&listener)
    @listeners << listener
  end
  def change_state(new_state)   
    @listeners.each { |l| l.call(@state, new_state) }
    @state = new_state
  end
end
class EventListener
  def hear(old_state, new_state)
    puts "Method triggered: state changed from #{old_state} " +
      "to #{new_state}."
  end
end
spawner = EventSpawner.new
spawner.subscribe do |old_state, new_state| 
 puts "Block triggered: state changed from #{old_state} to #{new_state}." 
end
spawner.subscribe &EventListener.new.method(:hear) 
spawner.change_state(4) | Block triggered: state changed from 0 to 4. Method triggered: state changed from 0 to 4. | Block triggered: state changed from 0 to 4. Method triggered: state changed from 0 to 4. | 
| s = "sample string"
replacements = { "a" => "i", "tring" => "ubstitution" }
replacements.collect(&s.method("gsub")) | ["simple string", "sample substitution"] | ["simple string", "sample substitution"] | 
| class Welcomer
 def Welcomer.a_class_method
   return "Greetings from the Welcomer class."
 end
 def an_instance_method
   return "Salutations from a Welcomer object."
 end
end
Welcomer.method("an_instance_method")            | NameError: undefined method `an_instance_method' for class `Class' ... | NameError: undefined method `an_instance_method' for class `Class' from (irb):45:in `method' from (irb):45 | 
| Welcomer.new.method("an_instance_method").call   | "Salutations from a Welcomer object." | "Salutations from a Welcomer object." | 
| Welcomer.method("a_class_method").call          | "Greetings from the Welcomer class." | "Greetings from the Welcomer class." |