Поддерживает ли Ruby ключевые слова (keyword arguments) в аргументах?

Косвенно. Ключевые слова в аргументах - это механизм передачи аргументов, когда каждый аргумент имеет свое имя, и поэтому порядок аргументов в вызове не играет значения. В 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.

Вход для пользователей