Project

General

Profile

Feature #3688

Updated by shyouhei (Shyouhei Urabe) over 12 years ago

=begin 
  
  Hello, 
 
  I saw Matz's Euroko 2010 keynote[1] where he mentioned adding the 
  ability to redefine methods gracefully in Ruby 2.0.    I mean, more 
  gracefully than this: 
 
    class Hash 
      # save the original method 
      alias __original_initialize__ initialize 
 
      # redefine the method 
      def initialize(*args, &block) 
        # do something extra ... 
 
        # call the original method 
        __original_initialize__(*args, &block) 
 
        # do something more ... 
      end 
    end 
 
  I suggest adding a "redef" keyword to Ruby 2.0 for this purpose: 
 
    class Hash 
      # redefine the method 
      redef initialize(*args, &block) 
        # do something extra ... 
 
        # call the original method 
        super 
 
        # do something more ... 
      end 
    end 
 
  The "redef" keyword should also have a twin "redefine_method"  
  method for use in block-based metaprogramming: 
 
    class Hash 
      # redefine the method 
      redefine_method :initialize do |*args, &block| 
        # do something extra ... 
 
        # call the original method 
        super 
 
        # do something more ... 
      end 
    end 
 
  Thanks for your consideration. 
 
  [1]: http://euruko2010.heroku.com/Matz- 
 
 =end 
 

Back