Когда список аргументов вызов метода Руби заканчивается в одной или нескольких пар ключ-значение, как foo: 'bar'
или 'foo' => 1
, Ruby собирает их всех в один хэш и передает его хэш как последний параметр. Вы можете видеть, что себя в irb
:
irb(main):002:0> puts foo: 'bar', baz: 'quux'
{:foo=>"bar", :baz=>"quux"}
=> nil
Таким образом, вы можете добавить последний, необязательный параметр для метода вы пишете получить этот хэш. Обычно вы хотите по умолчанию использовать пустой хеш. Вы можете назвать параметр все, что вы хотите, но options
это общее название:
def my_method(a, b, c, options = {})
...
end
Один полезный трюк, если вы используете Rails: Это часто удобно рассматривать простые строки и символы, как равнозначные. Rails добавляет метод symbolize_keys!
к Hash
, чтобы преобразовать все строковые ключи к символам:
def my_method(a, b, c, options = {})
options.symbolize_keys!
...
end
U рок-музыкант! Спасибо :) – facundofarias
Спасибо, хорошо объяснено: D +1 –