Как могут функции Ruby с именованными аргументами вызываться вместо хеша? - PullRequest
0 голосов
/ 16 мая 2019

Я пытаюсь заставить эту функцию foo вывести «first», а затем «second», но вместо этого она выводит {: x => «first»,: y => «second»} и «this is y».

Как использовать хеш в качестве именованных аргументов?

def foo(x='hi', y='this is y')
  puts x
  puts y
end

hash = {x: 'first', y: 'second'}
foo(**hash)

1 Ответ

3 голосов
/ 16 мая 2019

Просто вызовите метод с хешем: foo(hash)

Большая проблема: вы использовали не именованные параметры (или лучшие ключевые аргументы), а параметры со значениями по умолчанию. Чтобы использовать именованные параметры, вы не должны использовать =, а :.

def foo(x: 'hi', y:'this is y')
  puts x
  puts y
end

hash = {x: 'first', y: 'second'}
foo(hash)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...