[ruby-core:96152] [Ruby master Feature#16404] Add Proc#ruby2_keywords

[email protected]
Newsgroups gmane.comp.lang.ruby.core
Message-ID <redmine.journal-83021.20191209065949.17c5bf8d18fc554f@ruby-lang.org>
Issue #16404 has been updated by matz (Yukihiro Matsumoto).


It is ugly, and I personally don't want to add it to the language. But I have to admit it solves the real-world issues in some cases. So I accept. This might be removed sometime in Ruby3.x (after proper deprecation process).

Matz.
 

----------------------------------------
Feature #16404: Add Proc#ruby2_keywords
https://bugs.ruby-lang.org/issues/16404#change-83021

* Author: jeremyevans0 (Jeremy Evans)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
While the need is not as common as for methods, procs could benefit from supporting ruby2_keywords, and there are cases in Rails where keywords are passed through procs using a normal argument splat [1].  If we don't add this, such cases will require separate proc definitions depending on ruby version.  With this, you only need to call `ruby2_keywords` on the proc if it is defined.  Example:

```ruby
foo = ->(*args, &block){block.call(*args)}
foo.call(a: 1,  &->(**x){x})
# warning: The last argument is used as the keyword parameter
# warning: for `call' defined here; maybe ** should be added to the call?
# => {:a=>1}

foo.ruby2_keywords
foo.call(a: 1,  &->(**x){x})
# => {:a=>1}
```

I've added a pull request for this: https://github.com/ruby/ruby/pull/2728

[1] https://github.com/rails/rails/blob/34d66ca6bab109540299a7b30980627bea37e323/activemodel/lib/active_model/type/registry.rb#L12



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

Unsubscribe: <mailto:[email protected]?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.