metaprogramming/alias_definee.rb
tests/_examples/metaprogramming/alias_definee.rb in the metorex repository.
# An `alias` written where a `def` would land on the receiver alone lands
# there too, so the second name belongs to that object and to nothing else.
class Reading
def value
5
end
end
held = Reading.new
held.instance_eval do
alias second value
end
p held.second
p held.singleton_methods
p Reading.new.respond_to?(:second)
# A value the program cannot hold one copy of has no singleton class to
# write the second name on.
begin
:name.instance_eval do
alias spelled to_s
end
rescue TypeError => error
puts error.message
end
# A name written at the top level belongs to Object, and so does the second
# name an alias gives it.
def counted
7
end
alias tallied counted
p method(:tallied).owner
p tallied
Output:
5
[:second]
false
can't define singleton
Object
7