Donc, je sais que vous pouvez obtenir toutes les variables d'instance en rubis en appelant Exemple STRT> P> #instance_variables code>, mais s'ils n'ont pas encore été définis, ils ne se présentent pas encore.
w = Walrus.new
w.instance_variables # => [:@tusks, :@flippers]
3 Réponses :
Eh bien, ils n'existent pas encore. Les variables d'instance ressortent dans la première affectation. Si vous leur voulez dans une nouvelle instance, appuyez sur le constructeur.
Eh bien, attr_accessor code> crée une paire de méthodes, un setter et un getter. Je ne sais pas s'il y a une manière intégrée pour obtenir une liste, mais vous pouvez rechercher les méthodes d'instance pour les paires résultantes:
Walrus.instance_methods.find_all do |method|
method != :== &&
method != :! &&
Walrus.instance_methods.include?(:"#{method}=")
end
Que diriez-vous d'utiliser des méthodes moins les méthodes d'objet ou de classe? Le tableau de retour contiendra vos attributs / méthodes définis et les variables d'instance définies dans Getter / Accessor.
your_instance_name.methods - Object.methods your_instance_name.methods - Class.methods
Dupliqué possible de Comment obtenir Attributs définis via Att_Reader ou Att_Accessor