Bug #8418
closedwhen all params are optional, named arg hash maps to the first available param
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 12 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 12 years ago
- Status changed from Open to Rejected
That's the reason that keyword argument is introduced.
Updated by rits (First Last) over 11 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