class Foo
@@default = "default"
p instance_variables
p class_variables
class << self
p instance_variables
p class_variables
# How do I access the @@default variable here?
end
end
3
A
Répondre
2
De la même manière que vous le faites dans n'importe quel autre endroit: @@default
.
Je ne suis pas sûr de ce que p ..
est censé faire (Ruby n'est pas ma langue maternelle), mais cela fonctionne
class Foo
@@default = "default"
class << self
puts "#{@@default}"
end
end
1
Cette question est assez intéressant parce qu'il demande en substance « est-il un moyen Et pour autant que je peux dire, la réponse est "non", parce que tous les pointeurs ancêtres "ascendants" Ruby garde aussi pointent vers les métaclasses, et ainsi de suite class_variables()
dans l'un d'eux vous dira sur ses variables d'instance de classe Donc, vous devez référencer des objets par nom ou juste établir un handle avant d'entrer dans le contexte de la métaclasse ...
class Foo
@@default = "default"
@@me = self
p instance_variables
p class_variables
class << self
p instance_variables
p @@me.class_variables
end
end
Eh bien, je me sens stupide. Thanks = p – RyanScottLewis
'p' est un moyen paresseux d'écrire' puts': P – david4dev
La méthode "p" appelle '# inspect', puis appelle' puts() 'sur le résultat. C'est plus une méthode de débogage alors que 'puts()' est une méthode de sortie à usage général. – DigitalRoss