Je sais que self
est l'instance à l'intérieur d'une méthode d'instance. Donc, alors, self
est la classe à l'intérieur d'une méthode de classe? Par exemple, le travail suivant dans Rails?Dans Ruby, à l'intérieur d'une méthode de classe, est-ce que self est la classe ou une instance?
class Post < ActiveRecord::Base
def self.cool_post
self.find_by_name("cool")
end
end
Et d'ajouter aux réponses ci-dessous, car Ruby sera toujours évaluer le récepteur comme auto sauf indication, votre code ci-dessus peut simplement appeler 'find_by_name 'sans l'auto :) – brad
Merci, y a-t-il des cas où c'est une bonne idée de spécifier' self'? Est-ce que 'self.find_by_name' est le premier endroit où Ruby rechercherait' find_by_name'? Est-ce que ça a l'air ailleurs? Qu'en est-il dans une méthode définie globalement (une méthode définie dans le fichier en dehors d'une classe)? – ma11hew28
Je l'ai testé. Il semble que l'ordre de préséance soit la méthode de classe et la méthode définie globalement si aucune méthode de classe n'est trouvée. – ma11hew28