Как я могу объявить метод с аргументами ключевого слова точно так же, как направляющие делают. некоторые примеры могут быть
Person.find(:all, :conditions => "...").
Как я могу использовать символы для создания методов, подобных вышеупомянутому?
Я очень плохо знаком с рубином.Заранее спасибо!
Ruby на самом деле не имеет аргументов ключевых слов. 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
Вам просто нужно определить метод, в котором одним из параметров является хэш. На самом деле это довольно просто.
def method(arg1, params)
name = params[:name]
number = params[:number]
А затем назовите его так:
method(arg1, :name => 'Eric', :number => 2)
Два примечания:
Поскольку Ruby набирается динамически, просто сделайте :
def my_method(arg1, arg2)
#things
end
example:
my_method(:test, {:somehash => "yay"})
или
my_method :test, :somehash => "yay"
или
my_method(:test, :somehash => "yay")