Вы можете сделать последний аргумент необязательным хешем для достижения этого:
def some_method(x, options = {})
# access options[:other_arg], etc.
end
Однако в Ruby 2.0.0, как правило, лучше использовать новую функцию, называемую аргументы ключевого слова :
def some_method(x, other_arg: "value1", other_arg2: "value2")
# access other_arg, etc.
end
Преимущества использования нового синтаксиса вместо использования хеша:
- Меньше набирается для доступа к необязательным аргументам (например,
other_arg
вместо options[:other_arg]
).
- Легко указать значение по умолчанию для необязательных аргументов.
- Ruby автоматически обнаружит, что вызывающее лицо использовало неверное имя аргумента, и выдаст исключение.
Одним из недостатков нового синтаксиса является то, что вы не можете (насколько я знаю) легко отправить все аргументы ключевого слова в какой-либо другой метод, потому что у вас нет хеш-объекта, который их представляет.
К счастью, синтаксис для вызова этих двух типов методов одинаков, поэтому вы можете переходить с одного на другой, не нарушая хороший код.