[résolu]variables de classe; raccourcis syntaxiques

variables de classe; raccourcis syntaxiques [résolu] - Ruby/Rails - Programmation

Marsh Posté le 28-06-2009 à 04:20:50    

Salut tout le monde je cherche comment initialiser une variable de classe en utilisant les raccourcis syntaxiques
Le problème est que si j'utilise attr_accesor pour une variable de classe, je n'arrive pas à initialiser cette variable à l'intérieur de la classe.
 
sans le raccourci ca marche: [j'ai pas utilisé la balise cpp car avec cette dernière en faisant un copier coller sans sélectionner les numéros de lignes on les recopie quand même]
 
 
 
###DEBUT_VERSION_OK#####################
##########################################
class MaClasse
 
    def self.chaineDeClasse=(cc)
        @@chaineDeClasse = cc
    end
     
    def self.chaineDeClasse
        @@chaineDeClasse
    end
     
    @@chaineDeClasse = "zzzz"
end
 
obj = MaClasse.new()
puts MaClasse.chaineDeClasse # ca marche, affiche zzzzz
 
MaClasse.chaineDeClasse = "aaaa"
puts MaClasse.chaineDeClasse #ici ca marche, affiche aaaa
###FIN_VERSION_OK#######################################
#########################################################
 
 
 
 
 
mais la même code en utilisant  le raccourci attr_accesor (pour les variables de classe) à la place des méthodes self.chaineDeClasse cela ne marche pas
 
 
 
 
 
###DEBUT_VERSION_BUGGUEE###########################
#######################################################
class MaClasse
    class << self  
        attr_accessor :chaineDeClasse        
    end  
 
    @@chaineDeClasse = "zzzz" #ne renvoie pas d'erreur mais n'a pas l'air d'initialiser la variable de classe
end
 
obj = MaClasse.new()
puts MaClasse.chaineDeClasse # ca bug ici : ca m'affiche une ligne vide
 
MaClasse.chaineDeClasse = "aaaa"
puts MaClasse.chaineDeClasse #la ca marche, affiche "aaaa"
###FIN_VERSION_BUGGUEE##############################
#######################################################


Message édité par flashball le 28-06-2009 à 20:11:42
Reply

Marsh Posté le 28-06-2009 à 04:20:50   

Reply

Marsh Posté le 28-06-2009 à 10:14:34    

http://blade.nagaokaut.ac.jp/cgi-b [...] alk/272994
http://stackoverflow.com/questions [...] -variables

 

Franchement, google quoi...

Message cité 1 fois
Message édité par masklinn le 28-06-2009 à 10:14:53

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 28-06-2009 à 19:23:03    


Pour te parodier :
"Franchement lunettes quoi"  
 
C'est ce que j'utilise, cf les 10 premières lignes de la VERSION_BUGGUEE  
Tes liens n'expliquent pas comment  initialiser proprement cette variable car si je fais avec la VERSION_BUGGUEE comme indiqué dans mon premier post :
 
puts MaClasse.chaineDeClasse  
ca m'affiche une ligne vide au lieu de "zzzz" alors que j'ai @@chaineDeClasse = "zzzz"  de déclaré à l'intérieur de la classe

Message cité 1 fois
Message édité par flashball le 28-06-2009 à 19:31:12
Reply

Marsh Posté le 28-06-2009 à 19:31:03    

flashball a écrit :


Pour te parodier :
"Franchement lunettes quoi"


Mes lunettes fonctionnent bien, puisque j'arrive à lire le contenu de ces liens et toi pas.

 

Un indice pour vous dans votre salon: attr_accessor, ça crée un attribut d'instance, donc @foo. Toujours [:dawak]


Message édité par masklinn le 28-06-2009 à 19:32:45

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 28-06-2009 à 19:35:20    

je ne comprends pas puisque il me semble que je fais la même chose :
class MaClasse
    class << self
        attr_accessor :chaineDeClasse        
    end
 
j'utilise pas rails hein, que ruby1.9 et 1.8


Message édité par flashball le 28-06-2009 à 19:35:46
Reply

Marsh Posté le 28-06-2009 à 19:42:31    

merci donc apparemment il ne faut garder qu'un arobase même si c'est une variable de classe. Pourquoi ??
Et maintenant comme je fais pour avoir une variable d'instance qui se nomme pareil ?

Reply

Marsh Posté le 28-06-2009 à 19:45:43    

merci Masklin, ca ca marche :  
 
class MaClasse
    class << self
        attr_accessor :chaineDeClasse        
    end
 
 
   @chaineDeClasse = "zzzz" #
end
 
puts MaClasse.chaineDeClasse

Reply

Marsh Posté le 28-06-2009 à 19:51:30    

flashball a écrit :

merci donc apparemment il ne faut garder qu'un arobase même si c'est une variable de classe. Pourquoi ??


Parce qu'il y a 3 types de variables en Ruby: variable de classe, variable d'instance et variable locale. Mais une classe est aussi une instance de quelque chose (de la métaclasse Class pour être précis), une classe peut donc avoir des variables d'instance qui sont différentes des variables de classe d'une de ses instances (et les variables de classe d'une classe portent sur Class).


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 28-06-2009 à 20:15:04    

En utilisant class << self ; attr_accessor etc.
pour avoir accès aux variables de classe à l'intérieur des méthodes d'instances ( initialize par exemple) il faut utiliser self.class.ma_variable_de_classe


Message édité par flashball le 28-06-2009 à 20:43:40
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed