methods/top_level_self_and_calls.rb
tests/_examples/methods/top_level_self_and_calls.rb in the metorex repository.
# A method written at the top level runs with `main` as `self`, however it
# is called, and a call written with parentheses reaches the method even
# where a local of the same name exists.
def whoami
self
end
p(whoami)
p(whoami())
p(method(:whoami).call)
p(method(:whoami).receiver)
class Caller
def ask = whoami
end
p(Caller.new.ask.class)
def label = :method
label = "local"
p(label)
p(label())
count = 3
begin
count()
rescue NoMethodError => error
puts(error.message)
end
format = 5
p(format("%03d", 7))
p(format)
Output:
main
main
main
main
Caller
"local"
:method
undefined method 'count' for main
"007"
5