Мы не можем передавать аргументы ключевого слова как хэш с помощью строковых ключей, аргументы ключевого слова работают только с хешем в качестве символьных ключей.Почему аргументы ключевого слова должны передаваться как хэш с символьными клавишами, а не строковыми ключами в Ruby?
Простой пример:
def my_method(first_name:, last_name:)
puts "first_name: #{first_name} | last_name: #{last_name}"
end
my_method({last_name: 'Sehrawat', first_name: 'Manoj'})
#=> first_name: Manoj | last_name: Sehrawat
my_method({first_name: 'Bob', last_name: 'Marley'})
#=> first_name: Bob | last_name: Marley
my_method({'first_name' => 'Kumar', 'last_name' => 'Manoj'})
#=> Error: missing keywords: first_name, last_name (ArgumentError)
Что такое рассуждение за этим стоит?
Я думаю, что идея похожа на http://stackoverflow.com/questions/8189416/why- use-symbols-as-hash-keys-in-ruby – freemanoid
@freemanoid Я так не думаю. В этом случае синтаксис заключается в том, как принять локальную переменную. Символа нет. – sawa