So, if you need to alter some method that you know it's aliased, you may stay unworried: you won't affect the other aliased methods, and you can use them if you need the original behavior.
See my tests and the results below.
#!/usr/bin/ruby class A def original_method puts "original content" end alias aliased_method original_method alias_method :alias_methoded_method, :original_method end class B < A def original_method puts "modified content" end end class C < A def aliased_method puts "modified content" end end class D < A def alias_methoded_method puts "modified content" end end [A, B, C, D].each do |klass| puts "#{klass}:" obj = klass.new [:original_method, :aliased_method, :alias_methoded_method].each do |meth| print "#{meth}: " obj.send meth end puts endThe results:
A: original_method: original content aliased_method: original content alias_methoded_method: original content B: original_method: modified content aliased_method: original content alias_methoded_method: original content C: original_method: original content aliased_method: modified content alias_methoded_method: original content D: original_method: original content aliased_method: original content alias_methoded_method: modified content
No comments:
Post a Comment