Curso de Raku / Avanzado / Contenedores / Contextos
Contexto numérico, de cadena y booleano
Tres contextos muy comunes piden a un valor que se comporte como un número, una cadena o un valor booleano. Cada uno tiene un operador prefijo que lo fuerza explícitamente:
+— contexto numérico~— contexto de cadena?— contexto booleano
Aplicados a un array, devuelven su longitud, sus elementos unidos por espacios, y si tiene algún elemento:
my @a = 1, 2, 3;
say +@a; # 3
say ~@a; # 1 2 3
say ?@a; # TrueUn array vacío es 0 en contexto numérico y
False en contexto booleano:
my @empty;
say +@empty; # 0
say ?@empty; # FalseNo necesitas escribir siempre estos operadores a mano, porque el
lenguaje puede imponer el contexto correcto por ti. La aritmética pone
sus operandos en contexto numérico, la concatenación los pone en
contexto de cadena, e if, while y
and/or ponen su condición en contexto
booleano:
my @a = 1, 2, 3;
say 10 + @a; # 13, here @a is its length: 3
say 'items: ' ~ @a; # items: 1 2 3
if @a { say 'not empty' } # not emptyAsí que if @array { … } funciona exactamente como
esperarías: un array no vacío es verdadero. Los operadores prefijo son
la forma explícita de pedir las mismas coerciones.
En combinación con un if postfijo, esto permite crear
código realmente expresivo:
say "{+@a} items are there" if @a; # 3 items are therePráctica
Resuelve 1 cuestionario sobre el contenido de este tema.
Navegación del curso
← Contextos | Quiz — Contextos →
💪 O ve directamente a los ejercicios de esta
sección.