Руби на самом деле не имеет ключевых аргументов.Rails использует особенность Ruby, которая позволяет вам опустить скобки вокруг хеша.Например, для find
мы на самом деле называем:
Person.find(:all, { :conditions => "...", :offset => 10, :limit => 10 } )
Но если хэш является последним аргументом метода, вы можете оставить фигурные скобки, и он все равно будет рассматриваться какхеш:
Person.find(:all, :conditions => "...", :offset => 10, :limit => 10)
Вы можете использовать это в своих собственных методах:
def explode(options={})
defaults = { :message => "Kabloooie!", :timer => 10, :count => 1 }
options = defaults.merge(options)
options[:count].times do
sleep options[:timer]
puts options[:message]
end
end
И затем вызывать его:
explode :message => "Meh.", :count => 3
Или вызывать его без аргумента, в результате чего используются все значения по умолчанию:
explode