SlidesLab: Array ExtensionsLab: In Words

Reopening classes

class Fixnum
  def divisible_by? n
    self % n == 0
  end
end

4.divisible_by? 2 #=> true
4.divisible_by? 3 #=> false

Reopening classes

  • in Ruby, classes can be opened anywhere
  • possible to make additions or changes

    class Student
      def last_name
        @last_name
      end
    end
    
    class Student
      def first_name
        @first_name
      end
    end
    

Monkey Patching

  • Reopening a system or library class is known pejoratively as Monkey Patching
  • Very powerful & dangerous technique

With great monkey power comes great monkey responsibility.

  - Spider Monkey

comments powered by Disqus