8
votes

Obtenez attr_accessor / variables d'instance à Ruby

Donc, je sais que vous pouvez obtenir toutes les variables d'instance en rubis en appelant #instance_variables code>, mais s'ils n'ont pas encore été définis, ils ne se présentent pas encore.

Exemple STRT> P>

w = Walrus.new
w.instance_variables # => [:@tusks, :@flippers]


3 Réponses :


15
votes

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. XXX


0 commentaires

5
votes

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


0 commentaires

0
votes

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


0 commentaires