Curso de Raku / Avanzado / Contenedores / Introspección de contenedores
Usando VAR
VAR es un pseudo-método que devuelve el objeto
contenedor subyacente. Para una variable escalar, la llamada
.VAR devuelve el contenedor Scalar que hay
detrás de ella.
^name
Una vez que tienes el contenedor, puedes preguntar por el nombre de
su clase con .^name:
my $var1 = 42;
my $var2 = '42';
say $var1.^name; # Int
say $var1.VAR.^name; # Scalar
say $var2.^name; # Str
say $var2.VAR.^name; # Scalar.^name sobre la variable devuelve el tipo del
valor (Int o Str), mientras que
.VAR.^name devuelve el tipo del contenedor, que es
Scalar en ambos casos.
default
El método default devuelve el valor por defecto del
contenedor, es decir, lo que obtienes cuando el contenedor no tiene nada
propio. Con el trait is default lo estableces
explícitamente:
my Str $language is default('Raku');
say $language.VAR.default; # RakuSin un valor por defecto explícito, el valor por defecto es el tipo
del contenedor. Para un contenedor sin tipo, ese es Any,
independientemente del valor que contenga actualmente:
my $language = 'Raku';
say $language.VAR.default; # (Any)Para un contenedor con tipo, es el tipo de la restricción:
my Str $language;
say $language.VAR.default; # (Str)name
El método name devuelve el nombre del contenedor,
incluyendo el sigil:
my $language;
say $language.VAR.name; # $languageTen cuidado de no confundir ^name (el tipo) con
name (el nombre propio de la variable).
Navegación del curso
← Quiz —
WHAT y ^name | WHO y
HOW →
💪 O ve directamente a los ejercicios de esta
sección.