Monday, February 27, 2012
Changing aliased method does not alter the original one
Changing aliased method does not alter the original one, and vice-versa.
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.
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
end
The 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
Subscribe to:
Post Comments (Atom)

No comments:
Post a Comment