Project

General

Profile

Actions

Feature #5364

closed

How about new syntax: "object.\method" returns a Method instance?

Added by yimutang (Joey Zhou) about 13 years ago. Updated over 12 years ago.

Status:
Rejected
Target version:
-
[ruby-core:39700]

Description

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
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0