Добавление новых аргументов в функцию с сохранением обратной совместимости в Ruby

У меня есть старая функция, которая много раз вызывается в моем приложении. Я хотел бы немного обновить его, добавив несколько новых аргументов.

Когда я писал функцию, я не понимал преимуществ использования хэша в качестве единственного параметра (упомянутого здесь: http://www.skorks.com/2009/08/more-advanced-ruby-method-аргументы-хэши-и-блоки/ )

У меня есть:

def old_function(some_arg)
 puts some_arg
end

Я хотел бы переписать это, чтобы получить такой хеш:

def old_function(some_arg, hash)
   puts hash[:new_stuff] + "--" + some_arg
end

Все пока это не ломается:

puts old_function('greetings')

person user94154    schedule 28.08.2009    source источник


Ответы (1)


def old_function(some_arg, hash = {})
  ## Code
end

Хэш = {} устанавливает пустой хеш, если ничего не указано, поэтому старый код все равно будет проходить через метод.

person nitecoder    schedule 28.08.2009