| Cours #4 : Modules, case when, retours et fin de la théorie | |
|
|
Auteur | Message |
---|
Flibustier Lv.21
Age : 30 Inscrit le : 24/05/2008 Messages : 3234
| Sujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie Mer 8 Avr 2009 - 17:40 | |
| Moi aussi j'ai une petite question Comment fonctionne les - Code:
-
attr_reader: etc... Car je ne voit pas l'utilité, ni comment en créer (même en lisant le cour je capte pas...), ni comment on peut lire, editer, faire les deux, si les appeler (genre Game_Party::gold sa marche pas !) Bref, aider moi sur c'est fichu variable @ de module ! |
|
| |
Illusionniste Lv.12
Age : 34 Inscrit le : 27/12/2008 Messages : 757
| Sujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie Mer 8 Avr 2009 - 18:45 | |
| quand tu as une variable @var dans ta classe, attr_reader te permet uniquement de lire la valeur de cette valeur dans la classe. tu ne peux pas la modifier en dehors de cette classe. On l'appelle en mettant au dessus de la première méthode attr_reader :var
Mais dans le module j'ai remarqué que tu ne pouvais l'utiliser que si tu y crée une classe et que tu l'instancie avec un .new dans cette classe. |
|
| |
Maire Lv.9
Age : 34 Inscrit le : 15/10/2008 Messages : 351
| Sujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie Mer 8 Avr 2009 - 19:47 | |
| en gros, pour compléter ce que dit yamazaki: tu as plusieurs sortes de methodes: celles qui lisent, celles qui ecrivent: - Code:
-
class Test def initialize @variable = 12 end def variable # on lit @variable par appel de cette def return @variable end end - Code:
-
class Test def initialize @variable = 12 end def variable(a) # on ecrit @variable par appel de cette def @variable=a end end les accesseurs font pareils, c'est une sorte de raccourci: on définit une variable d'instance (@variable) puis on la passe en accesseur, hors méthode, par exemple, juste apres "class Test" - Code:
-
attr_accessor :variable #la variable est modifiable et lisible depuis l'instanciation de la classe $test.variable = 10 #ok p $test.variable # ok - Code:
-
attr_writer :variable #la variable est modifiable seulement depuis l'instanciation de la classe $test.variable = 10 # ok p $test.variable # erreur - Code:
-
attr_reader :variable #la variable est lisible seulement depuis l'instanciation de la classe $test.variable = 10 # erreur p $test.variable # ok berka |
|
| |
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
| Sujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie Jeu 9 Avr 2009 - 14:41 | |
| Désolé, la confusion viens d'une erreur qui s'est glisser dans le cours. En fait, les "accesseurs" attr_* n'existe que pour les classes avec un initialize. À l'intérieur des modules comme l'un des exemples le montrait, ça ne se peut pas, ça ne fonctionne pas. Désolé de cette petite erreur d'inatention. Comme berka l'a bien expliqué (merci berka. Toujours là au bon moment ), ça évite d'avoir à écrire manuellement les deux méthodes d'accès à la variable. Ça fonctionne aussi bien que si vous le faites manuellement, mais pourquoi écrire 6 lignes de code quand une seul fait tout le travail? NB: J'ai corrigé le cours. Je m'excuse encore d'en avoir induit certains en erreur. |
|
| |
Flibustier Lv.21
Age : 30 Inscrit le : 24/05/2008 Messages : 3234
| Sujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie Jeu 9 Avr 2009 - 15:11 | |
| Eh... Je comprends toujours pas... - Code:
-
class Test def initialize @var = 12 end def var # on ecrit @variable par appel de cette def return @var end attr_accessor :var $test.var = 11 p $test.var end
Erreur - Code:
-
class Test def initialize @variable = 12 end def variable # on lit @variable par appel de cette def return @variable end end attr_accessor :variable #la variable est modifiable et lisible depuis l'instanciation de la classe $test.variable = 10 #ok p $test.variable # ok Erreur Tous des "inderfined methode" |
|
| |
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
| Sujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie Jeu 9 Avr 2009 - 16:01 | |
| Premièrement, tes attr doivent être AU DÉBUT de ta classe, sinon tes variables n'existent pas, c'est pour ça qu'il te fout une erreur. Deuxièmement, il n'y a pas de deuxièmement. Il faut que tu penses que Ruby est un langage interprété ligne par ligne, donc l'ordre des chose est TRÈS importante.
Dernière édition par MirainoHikari le Jeu 9 Avr 2009 - 16:02, édité 1 fois |
|
| |
Maire Lv.9
Age : 34 Inscrit le : 15/10/2008 Messages : 351
| Sujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie Jeu 9 Avr 2009 - 16:02 | |
| il faut que tu inseres l'accesseur dans la classe, mais hors méthode. et j'espere que tu as au préalable instancié Test: $test = Test.new
berka
Ps: Miraino: elles peuvent etre partout dans la classe, ca marche aussi bien ! |
|
| |
Flibustier Lv.21
Age : 30 Inscrit le : 24/05/2008 Messages : 3234
| Sujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie Jeu 9 Avr 2009 - 16:52 | |
| Ah sa y est j'ai compris ! Même si je vois pas trop l'interêt... Enfin merci à vous trois de votre aide ! |
|
| |
Chevalier Lv.17
Age : 31 Inscrit le : 27/04/2008 Messages : 1835
| Sujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie Lun 1 Mar 2010 - 16:55 | |
| Bonjour, je voulais savoir ce que l'on devait mettre dans les accolades à la place de |matched| dans:
gsub!(pattern) {|matched| .... }
Je crois que le pattern doit être une expression régulière, mais je ne comprends pas à quoi servent les accolades et leur contenu =/ |
|
| |
Flibustier Lv.21
Age : 30 Inscrit le : 24/05/2008 Messages : 3234
| Sujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie Lun 1 Mar 2010 - 17:10 | |
| - Code:
-
p "abcde".gsub!("b") {"p"} => apcde Le truc entre les {} va remplacer le machin entre () |
|
| |
Chevalier Lv.17
Age : 31 Inscrit le : 27/04/2008 Messages : 1835
| Sujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie Lun 1 Mar 2010 - 17:18 | |
| Oh, merci beaucoup La Mèche, je comprends mieux grâce à toi ^^ |
|
| |
| Sujet: Re: Cours #4 : Modules, case when, retours et fin de la théorie | |
| |
|
| |
| Cours #4 : Modules, case when, retours et fin de la théorie | |
|