I'm afraid the normal way of creating a Method instance is circuitous
and a bit hard to write:
a_method = object.method(:method_name)
I find the way of obtaining a function/method object in Python is so
easy, for example, "str.split()" returns a list, while "str.split"
(without parentheses) returns a method object. However, parenthesis in
Ruby is always optional, so this road is blocked.
Well, how about "object.\method" style? You can type "str.\split" to get
"str.method(:split)".
The reasons are:
1. It makes people happy, writing less code, and no harm to readability.
2. "\" is not a frequently used token. It can only be used in strings,
regexps (or any else?). I think using this token leads to no ambiguity.
3. "\" is like Perl's referrence symbol. In Perl, you can use "$f =
\&func;" to make a referrence to the function. In Ruby, "&" seems
unnecessary.
4. It enhances the consistency of the language syntax. There are two
correlative methods "Object#send" and "Object#method", but...
str.send(:split) == str.split
str.method(:split) == ???????
If adding this new syntax, it looks more pretty:
str.method(:split) == str.\split
--
Posted via http://www.ruby-forum.com/.