From: meanlogin@... Date: 2014-08-16T03:49:55+00:00 Subject: [ruby-core:64413] [ruby-trunk - Bug #10142] named params don't always capture passed named args Issue #10142 has been updated by First Last. First Last wrote: > 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 > this example is particularly illustrative, it's absurd to complain about missing keyword b when the method is being passed keyword b ---------------------------------------- Bug #10142: named params don't always capture passed named args https://bugs.ruby-lang.org/issues/10142#change-48371 * 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/