В Ruby у нас есть простые способы получить все локальные переменные, глобальные переменные с помощью local_variables
и global_variables
метода.
Мы можем перечислить константы с помощью Object.constants
Но есть ли встроенный способ перечисления всех методов Object?
Примерно так:
def foo() end
def bar() end
def baz() end
# As `Array.new.methods' or `Array.instance_methods` returns all the methods of an Array object...
# Code to return all the methods defined above # => [:foo, :bar, :baz]
В IRB я могу написать:
def foo() end
p [self.methods.include?(:foo), self.respond_to?(:foo)]
И вывод [true, true]
в IRB, но в файле вывод на стандартный вывод [false, false]
Аналогично, если я запускаю следующий код:
def foo() end
puts Object.new.methods.include?(:foo)
В IRB я получаю true
, и если он сохраняется в файле, я получаю false
Вот ссылка , которая не сильно помогла:
Как перечислить все методы для объекта в Ruby?
Просто потому, что в нем говорится о получении методов класса или модуля. Но я хочу перечислить методы, определенные в самом верхнем объекте self.