Список методов только в модуле? - PullRequest
31 голосов
/ 29 июля 2010

Интересно, как можно перечислить все методы в модуле, но не включая унаследованные методы?

например.

module Software
  def exit
    puts "exited"
  end
end

puts Software.methods

Будет перечислять не только выход, но и все унаследованные методы.

Можно ли просто выйти из списка?

Спасибо

Ответы [ 2 ]

46 голосов
/ 29 июля 2010

На самом деле Software.methods будет не список exit. Software.instance_methods выведет список exit, а также любые унаследованные методы (что в данном случае является ничем, поскольку модули не наследуют никаких методов, если вы не включите другой модуль). Software.instance_methods(false) будет перечислять только методы, определенные в Software.

23 голосов
/ 29 июля 2010
Software.public_instance_methods

, кажется, работает для вашего примера.

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