Chúng tôi không thể chuyển đối số từ khóa dưới dạng băm bằng các khóa chuỗi, đối số từ khóa chỉ hoạt động với băm làm khóa biểu tượng.Tại sao các đối số từ khóa phải được chuyển dưới dạng băm với các phím biểu tượng, không phải là các khóa chuỗi trong Ruby?
Một ví dụ đơn giản:
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)
lý do đằng sau nó là gì?
Tôi nghĩ rằng ý tưởng này là tương tự như http://stackoverflow.com/questions/8189416/why- use-symbols-as-hash-keys-in-ruby – freemanoid
@freemanoid Tôi không nghĩ vậy. Trong trường hợp này, cú pháp là về cách chấp nhận một biến cục bộ. Không có biểu tượng nào liên quan. – sawa