В приведенном ниже Рубине результатов кода в: unknown keyword: a (ArgumentError)
:Рубин автоматически расширяет Hash в именованные аргументы без двойного знака
def test(x={}, y: true); end
test({a:1})
Почему? Я ожидаю, что это произойдет с test(**{a:1})
, но я не понимаю, почему мой хэш автоматически расширяется без двойного символа.
'x' является необязательным, и Ruby думает, что вы передаете kwargs (поскольку' test (a: 1) 'и' test ({a: 1}) 'эквивалентны, даже до 2.x, но потом он Не важно. Кстати, значение по умолчанию может быть равно '[]' или 'false'. Также есть [отчет об ошибке] (https://bugs.ruby-lang.org/issues/11068). – cremno
Да, это очень странно и неинтуитивно. Рад, что это рассматривается как ошибка. –