Это несколько эзотерическая c ситуация, в которой я даже не уверен, что это возможно. У меня есть метод, который вызывается многими методами:
def called_by_a_lot_of_methods
# Work
end
Я представляю функцию, в которой called_by_a_lot_of_methods
будет делать вещи, зависит от метода вызывающего, и мое текущее решение состоит в том, чтобы изменить все эти методы для передачи своих имен при вызове called_by_a_lot_of_methods
:
def some_method
called_by_a_lot_of_methods(method_name: some_method)
end
Или, альтернативно:
def some_method
called_by_a_lot_of_methods(method_name: __method__)
end
Но это становится утомительным, и мне было интересно, могу ли я дать method_name
параметр значение по умолчанию:
def called_by_a_lot_of_methods(method_name: __method__)
# Work
end
Это не работает, потому что __method__
оценивает сразу, давая called_by_a_lot_of_methods
, что явно не то, что я хочу. Тогда возникает вопрос: есть ли в Ruby способ отложить оценку аргумента до полезного времени, когда я знаю, что он должен дать правильный результат, который является методом внешнего вызова? Таким образом, избавляя меня от необходимости передавать аргумент везде?