self pointe vers la classe actuelle, donc cette méthode de définition définira la méthode de classe. Si self. n'est pas ajouté, la méthode d'instance sera définie.
L'autre type est appelé méthode singleton, qui ne peut être appelée que par un seul objet, pas par la classe de l'objet, ni par d'autres objets appartenant à la même classe que l'objet. La méthode singleton est définie comme suit
#category1=Category.new
def category1.last_updated_at
#blahblah
end
Après cette définition, seul l'objet catégorie1 peut appeler la méthode last_updated_at
Les classes Ruby sont également des objets, et peuvent également définir leurs propres méthodes singleton, telles que
def Category.last_udpated_at
#blahblah
end
De cette façon, seule Category peut appeler la méthode last_updated_at, mais pas ses instances, ni les autres classes, ni aucun autre objet pour être exact
Dans la définition de la classe Category (en dehors de la méthode), self fait référence à la catégorie elle-même, donc
def Category.last_udpated_at
#blahblah
end
peut être remplacé par
def self.last_udpated_at
#blahblah
end
C'est la méthode définie dans votre question. Comprenez-vous maintenant ? Essentiellement, il s'agit de la méthode singleton de Category, et Category est une classe. La méthode singleton d'une classe est également appelée méthode de classe et ne peut être appelée que par la classe elle-même.
Il convient de noter qu'une méthode de classe est une méthode singleton, mais c'est une méthode singleton d'une classe. A part ça, elle n'a rien de spécial. Tout comme la méthode d'instance est détenue par la classe à laquelle appartient l'objet, la méthode singleton est également détenue par ce qu'on appelle la classe propre de l'objet. Il y a beaucoup plus de connaissances sur les classes propres, donc je n'en parlerai pas ici. J'en parlerai dans l'article.
self
pointe vers la classe actuelle, donc cette méthode de définition définira la méthode de classe. Siself.
n'est pas ajouté, la méthode d'instance sera définie.Cette façon d'écrire
dans votre exempleself.
équivaut à :Il existe deux types de méthodes qu'un objet Ruby peut appeler.
Un type est défini dans la classe de l'objet, appelé méthode d'instance, telle que
Ensuite, l'instance de Category peut appeler cette méthode, mais la catégorie elle-même ne peut pas
L'autre type est appelé méthode singleton, qui ne peut être appelée que par un seul objet, pas par la classe de l'objet, ni par d'autres objets appartenant à la même classe que l'objet. La méthode singleton est définie comme suit
Après cette définition, seul l'objet catégorie1 peut appeler la méthode last_updated_at
Les classes Ruby sont également des objets, et peuvent également définir leurs propres méthodes singleton, telles que
De cette façon, seule Category peut appeler la méthode last_updated_at, mais pas ses instances, ni les autres classes, ni aucun autre objet pour être exact
Dans la définition de la classe Category (en dehors de la méthode), self fait référence à la catégorie elle-même, donc
peut être remplacé par
C'est la méthode définie dans votre question. Comprenez-vous maintenant ? Essentiellement, il s'agit de la méthode singleton de Category, et Category est une classe. La méthode singleton d'une classe est également appelée méthode de classe et ne peut être appelée que par la classe elle-même.
Il convient de noter qu'une méthode de classe est une méthode singleton, mais c'est une méthode singleton d'une classe. A part ça, elle n'a rien de spécial. Tout comme la méthode d'instance est détenue par la classe à laquelle appartient l'objet, la méthode singleton est également détenue par ce qu'on appelle la classe propre de l'objet. Il y a beaucoup plus de connaissances sur les classes propres, donc je n'en parlerai pas ici. J'en parlerai dans l'article.
Ajoutez self pour définir une méthode de classe, sinon c'est une méthode d'instance
Définir des méthodes de classe peut également être