Я изучаю Ruby Singletons, и я нашел несколько способов определить и получить список методов Singleton класса и объекта.
Методы Singleton класса
Способы определения методов класса singleton:
class MyClass
def MyClass.first_sing_method
'first'
end
def self.second_sing_method
'second'
end
class << self
def third_sing_method
'third'
end
end
class << MyClass
def fourth_sing_method
'fourth'
end
end
end
def MyClass.fifth_sing_method
'fifth'
end
MyClass.define_singleton_method(:sixth_sing_method) do
'sixth'
end
Способы получения списка методов сингл-класса :
#get singleton methods list for class and it ancestors
MyClass.singleton_methods
#get singleton methods list for current class only
MyClass.methods(false)
Методы Singleton для объектов
Способы определения методов Singleton
class MyClass
end
obj = MyClass.new
class << obj
def first_sing_method
'first'
end
end
def obj.second_sing_method
'second'
end
obj.define_singleton_method(:third_sing_method) do
'third'
end
Способ получения списка методов Singleton
#get singleton methods list for object and it ancestors
obj.singleton_methods
#get singleton methods list for current object only
obj.methods(false)
Есть ли другие способы сделать это?