Hola.
Tengo una duda de cómo Perl maneja los objetos.
Tengo una clase Nodo (Nodo.pm), la cual tiene dos atributos: el nombre y una matriz nXn.
En el programa que usa la clase Nodo.pm, creo una matriz nXn llena de 0.
Creo varios objetos: objeto1, objeto2,...
Le asigno un nombre a cada objeto y le asigno la matriz, con una pequeña modificación en un campo.
Cuando imprimo cada matriz de cada objeto, resulta que todas contienen la misma matriz.
No estoy seguro, pero creo que todas apuntan a una referencia de la matriz original.
Gracias por cualquier ayuda. Uso Perl v5.10.
Aquí un fragmento del código
Using perl Syntax Highlighting
$nodoA = Nodo
->new;
$nodoB = Nodo
->new;
$nodoC = Nodo
->new;
$tablero[1
][1
]=1;
$nodoA->nombre("raiz");
$nodoA->tablero(@tablero);
$tablero[1
][1
]=2;
$nodoB->nombre("1");
$nodoB->tablero(@tablero);
$tablero[1
][1
]=3;
$nodoC->nombre("2");
$nodoC->tablero(@tablero);
$tablero[1
][1
]=4;
imprimirTablero
($nodoA->tablero());
imprimirTablero
($nodoB->tablero());
imprimirTablero
($nodoC->tablero());Coloreado en 0.005 segundos, usando
GeSHi 1.0.8.4
Lo que me retorna es esto (con una matriz 2x2)
Using text Syntax Highlighting
0 0
0 4
0 0
0 4
0 0
0 4
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Fragmento del constructor
Using perl Syntax Highlighting
sub new {
my $this=shift;
my $class = ref($this) || $this;
my $self={};
$self ->{NOMBRE
} = undef;
$self ->{TABLERO
} = [];
bless $self, $class;
return ($self);
}Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4