El operador $ \backslash$ y el Aplanamiento de Listas

En el siguiente ejemplo observamos la acción del operador \ en una posible situación ambigua:

DB<1> @a = (\(1, 0, 0), \(0, 1, 0), \(0, 0, 1))
DB<2> p @{$a[1]}
Not an ARRAY reference at (eval 17)[/usr/share/perl/5.6.1/perl5db.pl:1521] line 2.
No se trata por tanto que produzca referencias a cada uno de los vectores. En realidad @a contiene un vector de referencias a los elementos individuales:
DB<3> x @a
0  SCALAR(0x8450d74) -> 1
1  SCALAR(0x81046f4) -> 0
2  SCALAR(0x8450dc8) -> 0
3  SCALAR(0x8461ccc) -> 0
4  SCALAR(0x846cd28) -> 1
5  SCALAR(0x8461c9c) -> 0
6  SCALAR(0x8461a68) -> 0
7  SCALAR(0x84619d8) -> 0
8  SCALAR(0x84619cc) -> 1
Primero \ actúa sobre la sublista. Luego las sublistas se aplanan.

Vea el ejemplo:

DB<1> @a = ((1, 0, 0), (0, 1, 0), (0, 0, 1))
DB<2> x @a
0  1
1  0
2  0
3  0
4  1
5  0
6  0
7  0
8  1
DB<3> @a = (scalar(1, 0, 0), scalar(0, 1, 0), scalar(0, 0, 1))
DB<4> x @a
0  0
1  0
2  1

Casiano Rodríguez León
Licencia de Creative Commons
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.
2012-06-19