Project

General

Profile

Actions

Bug #8418

closed

when all params are optional, named arg hash maps to the first available param

Added by rits (First Last) almost 11 years ago. Updated over 10 years ago.

Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 2.0.0p195 (2013-05-14 revision 40734) [i686-linux]
[ruby-core:55037]

Description

irb(main):028:0> def foo(arg = 1, options = {}); {arg: arg, options: options}; end; foo(a: 1)
=> {:arg=>{:a=>1}, :options=>{}}

since positional args can't follow the named hash, perhaps the named hash should map to the last possible param?

Updated by rits (First Last) almost 11 years ago

that would also make it correspond to the new syntax

irb(main):034:0> def foo(arg = 1, **options); {arg: arg, options: options}; end; foo(a: 1)
=> {:arg=>1, :options=>{:a=>1}}

Updated by nobu (Nobuyoshi Nakada) almost 11 years ago

  • Status changed from Open to Rejected

That's the reason that keyword argument is introduced.

Updated by rits (First Last) over 10 years ago

but isn't it good to have correspondence between keyword args and keyword hash?

when keyword args are used explicitly at invocation (foo a: 1, foo **hash) but the method signature does not use keyword params, it seems natural to bind the resulting hash to the last possible param, not the first

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0