Non possiamo passare argomenti di parole chiave come hash con chiavi di stringa, gli argomenti di parole chiave funzionano solo con hash come chiavi di simboli.Perché gli argomenti delle parole chiave devono essere passati come hash con le chiavi dei simboli, non con le chiavi di stringa in Ruby?
Un semplice esempio:
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)
Qual è il ragionamento dietro di esso?
Penso che l'idea è simile a http://stackoverflow.com/questions/8189416/why- use-symbols-as-hash-keys-in-ruby – freemanoid
@freemanoid Io non la penso così. In questo caso, la sintassi riguarda come accettare una variabile locale. Non c'è nessun simbolo coinvolto. – sawa