Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Array con tipos de datos dentro

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico
Mensaje Lun Mar 06, 2006 2:05 pm
slopal
Perlero Nuevo
Perlero Nuevo
Registrado: 23 Nov 2005
Mensajes: 78
Array con tipos de datos dentro Responder citando

Hola, necesitaría algo así, como un array que se acceda por su índice {0, 1, ... n-1}, y que dentro de cada array[i] hubiera una lista que se pueda llenar, consultar y tal.

Me he mirado el tema de las tablas de hash, pero hay que declarar cada posición verdad? Yo simplemente quiero acceder con el típico indice de un vector...


Y si eso se pudiera hacer, ya para completar, me iría de coña que en realidad fuera:
array donde en cada posición hubieran "dos casillas" (como una matriz n x 2), y en la primera casilla hubiera un número y en la segunda una lista.

Por ejemplo:

array[$1] = [24][(1,5,7,99,336,68]


espero que quede claro, gracias igualmente!

Si véis que es demasiado lento o lo que sea, y sería mejor otra opción (que yo sea capaz de entender y hacer Rolling Eyes , me la decís!)
THXXX
Mensaje Lun Mar 06, 2006 2:57 pm
Perl user
Maestro Honorario
Maestro Honorario
Registrado: 03 Nov 2004
Mensajes: 385
Responder citando

Que tal,

Lo que necesitas leer son los manuales de perllol y perldsc.

Saludos,
Mensaje Lun Mar 06, 2006 4:03 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4128
Ubicación: Valladolid, España
Re: Array con tipos de datos dentro Responder citando

slopal escribió:
Hola, necesitaría algo así, como un array que se acceda por su índice {0, 1, ... n-1}, y que dentro de cada array[i] hubiera una lista que se pueda llenar, consultar y tal.

Código:
push @vector, [1,2,3,4,5];
print $vector[0][2]; # 3

Lo que hacemos es 'meter' (push) en el @vector, una referencia a una lista ([]). Algo así como
Código:
@lista=(1,2,3,4,5);
push @vector, \@lista;
y de esa manera ya tenemos una variable con dos dimensiones ($vector[0][2], que realmente es $vector[0]->[2], porque el elemento 0-ésimo de vector es una referencia, tenemos que desreferenciarla (->) y lo que obtenemos es acceso a otra lista, de la cual extraemos el tercer elemento ([2]))
También se podía haber hecho:
Código:
@lista = (1,2,3,4,5);
$vector[24] = \@lista;
para poner la lista en la posición vigesimo quinta.
slopal escribió:
Y si eso se pudiera hacer, ya para completar, me iría de coña que en realidad fuera:
array donde en cada posición hubieran "dos casillas" (como una matriz n x 2), y en la primera casilla hubiera un número y en la segunda una lista.
Por ejemplo:

array[$1] = [24][(1,5,7,99,336,68]
Código:
explorer@next3:~> perl -MData::Dumper -le 'push @{$a[2]}, ( 24, [ 1,5,7,99,336,68 ] ); print Dumper @a'
$VAR1 = undef;
$VAR2 = undef;
$VAR3 = [
          24,
          [
            1,
            5,
            7,
            99,
            336,
            68
          ]
        ];

explorer@next3:~> perl -MData::Dumper -le 'push @{$a[2]}, ( 24, [ 1,2,3,4,5 ] ); print $a[2][0]'
24
explorer@next3:~> perl -MData::Dumper -le 'push @{$a[2]}, ( 24, [ 1,2,3,4,5 ] ); print $a[2][1][3]'
4
Lo mismo que antes, con push metemos una lista en el tercero elemento de @a. Y esa lista está compuesta de dos elementos, un escalar y una referencia a otra lista. Se podría haber escrito también como:
Código:
$a[2] = [ 24, [ 1,2,3,4,5 ] ];
print $a[2][0]; # 24
print $a[2][1][1]; # 2

Finalmente, para agregar más elementos a la lista que está dentro de la lista:
Código:
push @{$a[2][1]}, 7;
print $a[2][1][-1]; # 7 (Estamos pintando el último elemento de la lista (2º elemento) que está en el tercer elemento de @a

Recetario de estructuras de datos en Perl.
Manipulando arrays de arrays.
PerlFAQ4.
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group