From: meanlogin@... Date: 2014-08-16T03:45:42+00:00 Subject: [ruby-core:64412] [ruby-trunk - Bug #10142] named params don't always capture passed named args Issue #10142 has been updated by First Last. Nobuyoshi Nakada wrote: > Mandatory arguments have priority over keywords arguments. instead of just restating what is, why don't you say why it should be this way. before keyword args existed as first class citizens, it made sense for the keyword hash to be captured by the first free mandatory param, however now that they are first class, it makes no sense for the keyword arg x not to map to the first class keyword param x. so before keyword args are turned into a hash and consumed a mandatory param, actual keyword params shoud get a chance to consume them, few more examples: irb(main):014:0> def foo(a, b:); [a, b] end => :foo irb(main):015:0> foo c: 1, b: 1 ArgumentError: missing keyword: b irb(main):019:0> def foo(a, b: 0); [a, b] end => :foo irb(main):020:0> foo c: 1, b: 1 => [{:c=>1, :b=>1}, 0] in all three cases keyarg b: should map to keyparam b: why is that not preferable? ---------------------------------------- Bug #10142: named params don't always capture passed named args https://bugs.ruby-lang.org/issues/10142#change-48370 * Author: First Last * Status: Rejected * Priority: Normal * Assignee: * Category: * Target version: * ruby -v: ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- ~~~ruby irb(main):007:0> def foo(a, b: nil); [a, b] end :foo irb(main):008:0> foo b: 1 [ [0] { :b => 1 }, [1] nil ] ~~~ ______________________________ would be better if this raised -- https://bugs.ruby-lang.org/