Ruby automatically expands Hash into keyword arguments without double splat -
the below ruby code results in: unknown keyword: (argumenterror)
:
def test(x={}, y: true); end test({a:1})
why? expect happen test(**{a:1})
, don't understand why hash being automagically expanded without double splat.
since x optional, hash moves on kwarg argument. unspecified keywords raise error in case:
def foo(name:) p name end foo # raises "argumenterror: missing keyword: name" expected foo({name: 'joe', age: 10}) # raises "argumenterror: unknown keyword: age"
check out this article
Comments
Post a Comment