Curso de Raku / Avanzado / Contenedores / Contenedores ordenados
Enlace con :=
Hasta ahora, cada variable que creaste generaba un nuevo contenedor,
y la asignación con = colocaba un valor dentro de
ese contenedor. La vinculación (binding), escrita con :=,
es diferente: hace que un nombre se refiera a un contenedor
existente en lugar de crear uno nuevo.
Después de la vinculación, los dos nombres comparten el mismo contenedor, por lo que un cambio realizado a través de uno de ellos es visible a través del otro:
my $x = 10;
my $y := $x;
$x = 20;
say $y; # 20Aquí, $y := $x no copia el valor 10. Hace
que $y sea otro nombre para el mismo contenedor que
$x. Cuando $x se establece posteriormente en
20, leer $y también devuelve
20.
Compara esto con la asignación ordinaria, que copia el valor en un contenedor separado:
my $x = 10;
my $y = $x; # una copia simple
$x = 20;
say $y; # 10La vinculación también funciona con arrays. Lo siguiente hace que
@alias sea otro nombre para @data:
my @data = 1, 2, 3;
my @alias := @data;
@alias[0] = 99;
say @data; # [99 2 3]Un detalle más: si vinculas un nombre directamente a un valor literal, no hay contenedor detrás de él, por lo que el nombre se convierte en solo lectura:
my $pi := 3.14;
$pi = 3;Cannot assign to an immutable value
in block <unit> at t.raku line 2Navegación del curso
← Quiz — Arrays y listas | Aplanamiento e itemización →
💪 O ve directamente a los ejercicios de
esta sección.