я определил Методы specific_data1
и specific_data2
в мета-классе, и ожидался, эти методы относятся к одноплодному классу:Что такое метод singleton_class в классе и объекте?
class User
def User.specific_data1
"user specific data defined on user"
end
class << self
def specific_data2
"user specific data defined in meta class"
end
end
end
Но ни один из методов найдено в:
User.singleton_class.methods
Пожалуйста, помогите мне понять, что singleton_method
на User
класс есть и как это полезно.
Вы правы, но я беспокоюсь, почему они не появляются на объекте singleton_class. Являются ли они не принадлежащими к singleton class (meta class) – pramod
Это методы экземпляра одноэлементного класса, что означает, что они являются методами экземпляров одноэлементного класса, т. Е. Являются методами 'User'. Он действительно работает так же, как и любой другой класс. Методы экземпляра 'String' - это методы экземпляров' String', а не '' String'. Вы можете «разбить» экземпляр «String», вы не можете «разбить» класс «String». И так далее. –
Таким образом, метод User.singleton_class возвращает то, что – pramod