Оцените аргумент на сайте вызова - PullRequest
0 голосов
/ 27 марта 2020

Это несколько эзотерическая 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 способ отложить оценку аргумента до полезного времени, когда я знаю, что он должен дать правильный результат, который является методом внешнего вызова? Таким образом, избавляя меня от необходимости передавать аргумент везде?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...