From: transfire@...
Date: 2006-06-03T03:04:44+09:00
Subject: Re: object::foo syntax -- get a Method object?
This is taken from facet/kernel/method.rb:
#--
# NOTES:
#
# First Class Methods
#
# I think the best solution would be using the notation
# ::ameth. This would require some minor changes
# to Ruby, but with few backward incompatabilites if
# parantheticals revert back to the actual method invocation.
# Although this later stipulation means capitalized methods
# would not be accessible in this way b/c they would intefere with
# constant lookup. It's a trade off.
#
# Current Proposed Alternate
# ----------------- ------------------
-------------------
# Foo.Bar() method call method call method call
# Foo.Bar method call method call method call
# Foo.bar() method call method call method call
# Foo.bar method call method call method call
# Foo::Bar() method call method call 1st class
method
# Foo::Bar constant lookup constant lookup constant
lookup
# Foo::bar() method call method call 1st class
method
# Foo::bar method call 1st class method 1st class
method
#
# Then again this dosen't address bound versus unbound!!!
#
# Which do you prefer?
#++
class Object
# Easy access to method as objects, and they retain state!
#
# def hello
# puts "Hello World!"
# end
# p method!(:hello) #=>
#
def method!(s)
( @__methods__ ||= {} )[s] ||= method(s)
end
end