Curso de Raku / Avanzado / Contenedores / Contenedores escalares
Restricciones de tipo
En la parte de Fundamentos, viste como establecer el tipo de una variable usando una restricción de tipo. Vale la pena destacar que es el contenedor el que impone esta restricción sobre los valores que se le permite aceptar.
La siguiente declaración crea un contenedor escalar que solo puede albergar enteros:
my Int $int;Un contenedor con tipo acepta solo los valores que se ajustan a su tipo, por lo que todas las siguientes asignaciones son válidas:
my Int $int;
$int = 123; # directly an integer
say $int;
$int = 100 + 23; # the result is an integer
say $int;
$int = '123'.Int; # a string converted to an integer
say $int;Raku no realiza conversión automática de tipos en este caso. Asignar
un numero de punto flotante (que es un valor Rat en Raku)
no esta permitido:
my Int $int;
$int = 123.45;Ya obtienes un error en tiempo de compilación:
===SORRY!=== Error while compiling t.raku
Cannot assign a literal of type Rat (123.45) to a variable ($int) of
type Int. You can declare the variable to be of type Real, or try to
coerce the value with 123.45.Int or Int(123.45), or just write the value
as 123.
at t.raku:2
------> <BOL>⏏$int = 123.45;Para evitar el error, convierte el valor explícitamente:
my Int $int;
$int = 123.45.Int;
say $int; # 123No te confundas con los dos puntos en 123.45.Int. El
primero es el punto decimal; el segundo llama al método Int
sobre el valor racional (Rat).
Práctica
Resuelve 1 cuestionario sobre el contenido de este tema.
Navegación del curso
← Tipos de datos y contenedores escalares | Quiz — Restricciones de tipo →
💪 O ve directamente a los ejercicios de esta
sección.