Как вернуть (в Interactive Ruby Shell) код, который запускается при вызове метода - PullRequest
0 голосов
/ 29 января 2019

В других языках я видел способы показа кода, который составляет функцию или метод.Есть ли способ сделать это в IRB?

Например, в R вы можете просто ввести функцию без (), и она сообщит вам, какой код будет выполняться при вызове функции.Простой пример здесь

Возможно ли это в IRB?(желательно без pry или каких-либо других драгоценных камней)

1 Ответ

0 голосов
/ 31 января 2019

Цитирование https://stackoverflow.com/a/46966145/580346:

method = SomeConstant.method(:some_method_name)
file_path, line = method.source_location
# puts 10 lines start from the method define 
IO.readlines(file_path)[line-1, 10]

Если вы хотите использовать это более удобно, вы можете открыть класс Method:

# ~/.irbrc
class Method
  def source(limit=10)
    file, line = source_location
    if file && line
      IO.readlines(file)[line-1,limit]
    else
      nil
    end
  end
end

Вставьте указанный выше код в ваш irb и затем позвоните YourConstant.method(:your_method).source

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