Bonjour,
Je suis en train de tenter de créer une structure hiérarchique imbriquée.
Pour celà, j'ai une classe "Test" qui contient un tableau "elements" dans lequel je voudrai stocker des instances de la même classe "Test".
Seulement, je n'arrive pas à insérer des éléments dans le tableau...
J'ai essayé de le mettre en global dans le package, mais à ce moment là on dirait qu'il est global pour toutes les instances... En tout cas, passé 2 niveaux ($i et $j dans la fonction getArray) je n'arrive plus à récupérer la valeur incorporée dans l'instance avec la méthode test();
Si je ne le mets pas en global (cas présent) j'ai une erreur comme quoi je dois utiliser une variable de type Array et non pas Hash pour la méthode push
Si quelqu'un à une petite idée, elle sera la bienvenue
D'avance merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99 #!/usr/bin/perl use strict; use Carp; my $t = Test->new( 'hello world' ); print( $t . "\n" ); print( $t->test() . "\n" ); my @a = getArray(); print( @a[0] . "\n" ); my $x = $a[0]; print $x->test() . "\n"; my $y = $x->getElementFromTab( 1 ); print $y->test() . "\n"; my $z = $y->getElementFromTab( 2 ); print $z->test() . "\n"; sub getArray { my @a; my $i = 0; my $j = 0; my $k = 0; for( $i = 0; $i < 10; $i++ ) { my $t = Test->new( 'hello world ' . $i ); for( $j = 0; $j < 3; $j++ ) { my $t2 = Test->new( 'yop yop yop ' . $i . " " . $j ); for( $k = 0; $k < 3; $k++ ) { my $t3 = Test->new( 'arf ' . $i . " " . $j + " :: " + $k ); $t2->addElementInTab( $t3 ); } $t->addElementInTab( $t2 ); } push( @a, $t ); } return @a; } package Test; use strict; #my @elements; sub new { #récupère les arguments my ($class, $test ) = @_; my $this = {}; $this->{'test'}=$test; $this->{'elements'}=(); bless $this, $class; return $this; } sub addElementInTab { my ( $this, $element ) = @_; push( $this->{'elements'}, $element ); } sub test { my ( $this ) = @_; return $this->{'test'}; } sub getElementFromTab { my ( $this, $index ) = @_; return $this->{'elements'}[$index]; } sub DESTROY { my ( $this ) = @_; }
Partager