[Résolue] attr_reader, attr_accessor, j'ai rien de plus explicite pour un titre Oo
Auteur
Message
Gothor
Chevalier Lv.17
Age : 31 Inscrit le : 27/04/2008 Messages : 1835
Sujet: [Résolue] attr_reader, attr_accessor, j'ai rien de plus explicite pour un titre Oo Lun 1 Mar 2010 - 17:48
Bonjour à tous, voilà, pour les cours de script de Miraino, j'essaye d'utiliser les modules et les variables en mode lecture seule/lecture-écriture...
J'ai donc fait un petit test... Ce que je ne comprends pas, c'est pourquoi, dans le premier message, à la place des variables @variable_R et @variable_WR, rien ne s'affiche lors du premier message, alors qu'elles sont initialisées à 30 et 40...
Merci d'avance
Code:
module MonModule CONSTANTE = 20 class MaClasse attr_reader :variable_R attr_accessor :variable_WR @variable_R = 30 @variable_WR = 40 def initialize print "Les valeurs initiales des variables sont :\nConstante : #{MonModule::CONSTANTE}\nVariable en mode lecture : #{@variable_R}\nVariable en mode lecture/écriture : #{@variable_WR}\n\nTentons de remplacer chacune de ces valeurs en leur mettant toute la valeur de 50..." @variable_R = 50 @variable_WR = 50 print "Les valeurs initiales des variables sont :\nConstante : #{MonModule::CONSTANTE}\nVariable en mode lecture : #{@variable_R}\nVariable en mode lecture/écriture : #{@variable_WR}\n\nNous remarquons que seule la variable en mode lecture/écriture a vu sa valeur modifiée car la constante étant constante, il est impossible de changer sa valeur, et la dernière variable étant uniquement en mode lecture, ne peut pas être modifée ailleurs que dans le module même." end end end
begin appel = MonModule::MaClasse.new end
Dernière édition par Gothor le Ven 19 Mar 2010 - 12:13, édité 1 fois
jebbou
Doyen
Age : 46 Inscrit le : 20/08/2008 Messages : 2485
Sujet: Re: [Résolue] attr_reader, attr_accessor, j'ai rien de plus explicite pour un titre Oo Lun 1 Mar 2010 - 18:04
J'allais dire que l'initialisation des variables doit de faire dans le initialize, mais j'ai vu ceci dans le cours d'Hikari.
Code:
class MaClasse attr_accessor :ma_var MA_CONST = "allo" @ma_var = "coucou" end
Selon ce bout de code tout devrait marcher sur des roulettes. Essaie néanmoins de mettre les initialisations dans le Initialize.
La Meche
Flibustier Lv.21
Age : 30 Inscrit le : 24/05/2008 Messages : 3234
Sujet: Re: [Résolue] attr_reader, attr_accessor, j'ai rien de plus explicite pour un titre Oo Lun 1 Mar 2010 - 18:32
Gothor > Ton code est faux =D (Enfin d'après mes petites connaissance) Mets tes variables dans l'initialize et test =)
PS : Les variables qui se trouve directement dans la classe (et non dans des méthodes) on les écrit
Code:
@@var
Va savoir pourquoi =/
vincentmhd
Maire Lv.9
Age : 37 Inscrit le : 04/02/2009 Messages : 326
Sujet: Re: [Résolue] attr_reader, attr_accessor, j'ai rien de plus explicite pour un titre Oo Lun 1 Mar 2010 - 19:35
Normal, c'est un autre type de partage de variables, elles sont communes à toutes les instances de cette classe à la fois.
Si j'ai une classe Voiture. Ma twigo, et ma mercerdes, partageront cette variable, elles n'auronts pas chacune la leur. La modifier pour une la modifiera pour toutes. Je crois que l'on parle de variables statiques, si j'essais de faire un lien avec le C++.
Gothor
Chevalier Lv.17
Age : 31 Inscrit le : 27/04/2008 Messages : 1835
Sujet: Re: [Résolue] attr_reader, attr_accessor, j'ai rien de plus explicite pour un titre Oo Mar 2 Mar 2010 - 8:35
Les seules types de variables pouvant être placées et étant accessibles situées dans les modules sont-elles les constantes?
Oh, et pourquoi, du coup, lorsque je mets @@variable_R = 50, la valeur de la variable est modifiée alors qu'elle n'est qu'en mode lecture : attr_reader :variable_R
vincentmhd
Maire Lv.9
Age : 37 Inscrit le : 04/02/2009 Messages : 326
Sujet: Re: [Résolue] attr_reader, attr_accessor, j'ai rien de plus explicite pour un titre Oo Mar 2 Mar 2010 - 11:13
Un module est un conteneur, je crois que c'est l'équivalent des namespaces du C++, il sert juste à faire différentes caisses à objects. Tu ranges tes objets avec des noms. Tu y mettre plein de choses, après cela va vivre differement selon leur nature...
En réalité, certaines variables dans ces espaces ne dépasseront pas la compilation, le moment où le programme est écrit. Tu peux éxecuter des bouts de code à ce moment là, on parle de préprocesseur. Les variables toutes bêtes sont "consommées", ça permet par exemple de calculer des Constantes... Elles seront constantes après compilation, et parfois tu ne sais pas la valeur qu'elles auronts avant, par exemple si tu donnes l'occasion au maker de customiser le script.
#------------------------------------------------------------------------------# # # # Le linker est créé à la compilation. Il permet de faire le lien inverse # #entre CARACT et STAT ainsi les caractéristiques pourront savoir de quelles # #stats, elles sont membres. # #------------------------------------------------------------------------------# CARACT_LINKER = [] for i in 0...CARACT.size() id = [] for j in 0...STAT.size() if STAT[j][2][0] == i id += [j] end if STAT[j][2][1] == i id += [j] end end CARACT_LINKER[i] = id end
Les stats sont des combinaisons de caracts, l'update des caracts doit mettre à jour les stats correspondantes. Pour cela, il y a le linker qui informe la caract à quelle stat elle est reliée... C'est relou à écrire et à lister, et puis si un maker customise, il a de grandes chances de se tromper dans l'écriture du linker, s'il devait le faire. Alors le préprocesseur se charge de le créer la constante.
Sans pouvoir m'avancer. Je crois que les Contantes sont les seules variables qui ne soient pas consommées à l'intérieur d'un module après compilation. Les variables @ et @@ sont faites pour être encapsulées (protégées) dans une classe, et n'ont pas leur place isolées dans un module. Après je ne fais que des suppositions sur la base de ce que connait du C++, car les langages objets fonctionnent un peu pareils. Et je ne sais pas pourquoi en la mettant en reader elle continue de se faire écraser...
Angellan
Admindictatrice
Age : 34 Inscrit le : 27/02/2009 Messages : 2855
Sujet: Re: [Résolue] attr_reader, attr_accessor, j'ai rien de plus explicite pour un titre Oo Ven 19 Mar 2010 - 9:43
Ou en est ce problème ? S'il est résolu merci d'éditer votre premier message et de mettre [résolu] dans le titre (n'est-ce pas ?)
Contenu sponsorisé
Sujet: Re: [Résolue] attr_reader, attr_accessor, j'ai rien de plus explicite pour un titre Oo
[Résolue] attr_reader, attr_accessor, j'ai rien de plus explicite pour un titre Oo