No More Destructuring Objs in Func Args in Ruby2.7
Ruby has supported destructuring of objects into keyword arguments for a while in the Ruby 2.* series of releases, but now you'll be getting a warning if you try this:
The 2.6 version
> def foo(a:, b:); puts [a, b]; end
> foo({a: 2, b: 2})
1
2
The 2.7 version
> def foo(a:, b:); puts [a, b]; end
> foo({a: 2, b: 2})
warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
This warning will turn into an error in Ruby 3.0.
And if you add **
to the call like it tells you to:
> def foo(a:, b:); puts [a, b]; end
> foo(**{a: 2, b: 2})
OK Everything is cool. You can't put **
if your keyword arguments are in a lambda
which is being passed to map(&myLambda)
though.
In this case, you'll have to rewrite your code, so do that or you'll be version locked!
H/T Brian Dunn
Read more here.
Tweet