Je comprends (je pense) la différence entre les variables de classe et les variables d'instance d'une classe dans Ruby. P>
Je me demande comment on peut accéder aux variables d'instance d'une classe de l'extérieur de cette classe. p>
de l'intérieur (c'est-à-dire, dans une méthode de classe au lieu d'une méthode d'instance), il est possible d'y accéder directement, mais de l'extérieur, existe-t-il un moyen de faire Je n'ai aucune raison spécifique de le faire, j'apprends simplement de rubis et de vous demander si cela est possible. P> myClass.class. [@ $ #] variablename < / code>? p>
3 Réponses :
>> foo
Ruby a une classe, un objet de classe et un exemple.
Une variable de classe appartient à une classe.
une variable d'instance de classe appartient à un objet de classe p> blockQuote>variable de classe: p>
accessible dans la classe et ses instances.
attr_accessor ne fonctionne pas sur les variables de classe. p> blockQquote>variable d'instance de classe: p>
Accessible uniquement à travers la classe.
attr_accessor fonctionne si vous le définissez dans la classe et non dans l'objet de la classe comme ci-dessous. p> blockQquote>xxx pré> définissant un getter et un setter sur les instances de la variable d'instance de classe B de: p>
xxx pré> maintenant l'instance de classe La variable B est accessible via la classe propriétaire et ses instances.
En tant que plusieurs jours, l'apprenant rubis, c'est le plus que je puisse faire. P>`irb(main):021:0* class A irb(main):022:1> @b = 1 irb(main):023:1> class << self irb(main):024:2> attr_accessor :b irb(main):025:2> end irb(main):026:1> def b irb(main):027:2> A.b irb(main):028:2> end irb(main):029:1> def b=(v) irb(main):030:2> A.b=v irb(main):031:2> end irb(main):032:1> end => :b= irb(main):033:0> A.b => 1 irb(main):034:0> c = A.new => #<A:0x00000003054440> irb(main):035:0> c.b => 1 irb(main):036:0> c.b= 50 => 50 irb(main):037:0> A.b => 50 irb(main):038:0>`
en rubis, vous pouvez y parvenir de 2 façons
Permettez-moi d'élaborer les manières ci-dessus pour vous, p>
à l'aide d'attr_ * Méthodes forts> p> class Human
attr_accessor :sex
end
//from outside
human = Human.new
// getter method call
puts human.sex
// setter method call to explicitly set the instance variable
human.sex = 'female'
puts human.sex
// now this prints female which is set