I°«ll also say I like byroot°«s idea, especially as bare `\VALUE`
currently throws a SyntaxError.

On Fri, Apr 9, 2021 at 1:59 PM <eregontp / gmail.com> wrote:
>
> Issue #17785 has been updated by Eregon (Benoit Daloze).
>
>
> I like @byroot's idea to solve the more general issue and not just this specific instance.
>
> marcandre (Marc-Andre Lafortune) wrote in #note-3:
> > Clearly, `class_` is much simpler and much faster than `binding.local_variable_get(:class)`...
>
> It can be the same performance with a JIT and escape analysis (i.e., it's the same on TruffleRuby).
>
> ----------------------------------------
> Feature #17785: Allow named parameters to be keywords
> https://bugs.ruby-lang.org/issues/17785#change-91441
>
> * Author: marcandre (Marc-Andre Lafortune)
> * Status: Open
> * Priority: Normal
> * Assignee: matz (Yukihiro Matsumoto)
> ----------------------------------------
> We should allow named parameters to be keywords and use add a trailing `_` to the corresponding variable:
>
> ```ruby
> def check(arg, class:)
>   arg.is_a?(class_)
> end
>
> check(42, class: Integer) # => true
> ```
>
> Currently, if we want such an API we have to use `**rest`:
>
> ```ruby
> def check(arg, **rest)
>   class_ = rest.fetch(:class) { raise ArgumentError('missing keyword: :class')}
>   if rest.size > 1
>     unknown = rest.keys - [:class]
>     raise ArgumentError("unknown keyword(s): :#{unknown.join(', :')})
>   end
>
>   arg.is_a?(class_)
> end
> ```
>
> This is very verbose, much less convenient, much less readable, prevents `steep` from generating the proper signature, etc.
>
> We should do the same for pattern match.
>
>
>
> --
> https://bugs.ruby-lang.org/
>
> Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>



-- 
Austin Ziegler  halostatue / gmail.com  austin / halostatue.ca
http://www.halostatue.ca/  http://twitter.com/halostatue

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>