[Débutant] Tableaux et classes
Bonjour,
J'ai déjà ouvert un sujet sur les tableaux, mais le problème ici est légèrement différent...
La question est comment modifier un tableau qui est un element d'une classe ?
Je m'explique :
Soit une classe avec un constructeur. Un des éléments de la classes est un tableau double :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| sub new {
my ($classe, $fichier) = @_;
my @tabParam;
$tabParam[0][0] = 'nom';
$tabParam[0][1] = 'type';
Utils->printDoubleTable(@tabParam);
my $self = {
nomFichier => $fichier,
listeParam => @tabParam
};
Utils->printDoubleTable($self->{listeParam});
return(bless($self, $classe));
} |
Et une méthode. Avec cette méthode, je souhaite rajouter des éléments dans le tableau.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| print ("Debut de la fonction ajoutParam\n");
my ($this, $nomParam, $type) = @_;
print ("1 \n");
Utils->printDoubleTable($this->{listeParam});
my @tabParam = $this->{listeParam};
print("test : " . $tabParam[0][1] . "\n");
print ("2 \n");
Utils->printDoubleTable(@tabParam);
my $nbParam = scalar(@tabParam);
print("nomParam=$nomParam - type=$type - nbParam:" . $nbParam . "\n");
$tabParam[$nbParam][0] = $nomParam;
$tabParam[$nbParam][1] = $type;
print ("3 \n");
Utils->printDoubleTable(@tabParam);
$this->{listeParam} = @tabParam;
print ("4 \n");
Utils->printDoubleTable($this->{listeParam});
print ("Fin de la fonction ajoutParam\n"); |
Pour information, Utils->printDoubleTable est une méthode que j'ai codé pour connaitre le contenu de mon tableau.
Quand j'appelle ajoutParam, je voudrai rajouter $this->{listeParam} deux lignes. Le problème, c'est que je ne peux pas acceder directement à $this->{listeParam}[1][0] par exemple, pour rajouter mon element.
Je peux par contre, récuperer $this->{listeParam} dans un tableau et faire l'affectation. Par contre, après, ce nouveau tableau, je ne peux plus l'affecter a $this->{listeParam}.
Les logs me donnent ca :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| Debut de la fonction ajoutParam
1
Dans la fonction printDoubleTable
tab[0][0]=nom
tab[0][1]=type
test : type
2
Dans la fonction printDoubleTable
tab[0][0]=nom
tab[0][1]=type
nomParam=CODE - type=N - nbParam:1
3
Dans la fonction printDoubleTable
tab[0][0]=nom
tab[0][1]=type
tab[1][0]=CODE
tab[1][1]=N
4
Dans la fonction printDoubleTable
Can't use string ("2") as an ARRAY ref while "strict refs" in use at class_utils.pl line 58. |
Notez le résultat du Utils->printDoubleTable($this->{listeParam}); qui donne le contenu du tableau au départ et plus rien apres l'affectation...
Bref, pour résumer, comment est-ce que je peux modifier un tableau élément d'une classe ?