Поддерживает ли Ruby ключевые слова (keyword arguments) в аргументах?
чт, 02/08/2007 - 20:11 — spine
Косвенно. Ключевые слова в аргументах - это механизм передачи аргументов, когда каждый аргумент имеет свое имя, и поэтому порядок аргументов в вызове не играет значения. В Ruby, такого поведение можно достичь при помощи хешей, например:
def invoice(customer, items, discount)
...
end
invoice("biggles", [meat_tray, ice], 0.08)
трансформируется в
def invoice(params)
customer = params[:CUSTOMER]
items = params[:ITEMS] || EMPTY_ITEMS
discount = params[:DISCOUNT] || 0.0
end
invoice(:DISCOUNT => 0.08, :ITEMS => [meat_tray, ice],
:CUSTOMER => "Biggles")
Во втором примере в списке аргументов создается хеш, который затем передается в метод. Это значит, что некоторые аргументы можно пропустить, и не нужно помнить их порядок.
Некоторые языки поддерживают ключевые слова в аргументах, поэтому этот вопрос иногда задается по отношению к Ruby. Ключевые слова в аргументах более детально обсуждаются на странице www.rubygarden.org/ruby?KeywordArguments.
