Project

General

Profile

Actions

Feature #7346

closed

object(...) as syntax sugar for object.call(...)

Added by rosenfeld (Rodrigo Rosenfeld Rosas) about 10 years ago. Updated about 10 years ago.

Status:
Rejected
Priority:
Normal
Target version:
[ruby-core:49298]

Description

I propose for the parser to interpret "object(...)" as "object.call(...)". It should raise NoMethodError at runtime if object doesn't respond to "call".

This would read better than using "call":

double = -> n { n * 2 }

double(3) == 6

Sorry if this has already been proposed before (and rejected) but I couldn't find any references to something like this using Redmine's search interface.


Related issues 1 (0 open1 closed)

Has duplicate Ruby master - Feature #6672: Calling #() without dot before bracesRejected06/30/2012Actions

Updated by matz (Yukihiro Matsumoto) about 10 years ago

  • Status changed from Open to Rejected

I have once tried, but it caused serious incompatibility problem for example:

p = Object.new
p(15)

So compromise with object.() syntax introduced in 1.9.

Matz.

Updated by rosenfeld (Rodrigo Rosenfeld Rosas) about 10 years ago

Ah, ok, I didn't know about this syntax until now. What does the code above do?

Updated by matz (Yukihiro Matsumoto) about 10 years ago

We easily forget conflict between method names and variable names, in a language like Ruby, where methods and variables have separated name space.

We expect p(15) to print 15 even when we have a variable named p in the scope.

Matz.

Updated by rosenfeld (Rodrigo Rosenfeld Rosas) about 10 years ago

Ah, of course! :D I totally forgot about Kernel#p! :P

Yes, that makes total sense.

Updated by nathan.f77 (Nathan Broadbent) about 10 years ago

@rosenfeld (Rodrigo Rosenfeld Rosas), I'll just mention that you can use Proc#[] in your example:

double = -> n { n * 2 }

double[3] == 6 #=> true

On Wednesday, 14 November 2012, rosenfeld (Rodrigo Rosenfeld Rosas) wrote:

Issue #7346 has been updated by rosenfeld (Rodrigo Rosenfeld Rosas).

Ah, of course! :D I totally forgot about Kernel#p! :P

Yes, that makes total sense.

Feature #7346: object(...) as syntax sugar for object.call(...)
https://bugs.ruby-lang.org/issues/7346#change-32860

Author: rosenfeld (Rodrigo Rosenfeld Rosas)
Status: Rejected
Priority: Normal
Assignee: matz (Yukihiro Matsumoto)
Category: core
Target version: Next Major

I propose for the parser to interpret "object(...)" as "object.call(...)".
It should raise NoMethodError at runtime if object doesn't respond to
"call".

This would read better than using "call":

double = -> n { n * 2 }

double(3) == 6

Sorry if this has already been proposed before (and rejected) but I
couldn't find any references to something like this using Redmine's search
interface.

--
http://bugs.ruby-lang.org/

Updated by rosenfeld (Rodrigo Rosenfeld Rosas) about 10 years ago

Yes, I know, it is just that I prefer to read object.call(arguments) than object[arguments]. This is just a personal opinion, I know and I can change my mind some day about this :)

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0