Curso de Raku / Avanzado / Contenedores / Contenedores escalares

Valores predeterminados

Cuando se crea una nueva variable escalar sin una asignación inmediata, el contenedor aun mantiene un valor — su valor por defecto. El valor por defecto exacto depende del tipo de la variable.

El programa a continuación no es la mejor forma de usar Raku, pero ilustra el punto:

my $int;
say $int + 5;

La salida contiene 5, que puede ser lo que esperabas si asumiste que el valor por defecto de $int es 0. Sin embargo, el programa también imprime una advertencia:

Use of uninitialized value $int of type Any in numeric context
  in block <unit> at t.raku line 2
5

Para eliminar esta incertidumbre, puedes asignar un valor explícitamente:

my $int = 0;
say $int + 5; # 5

O declarar un valor por defecto con el trait is default:

my $int is default(0);
say $int + 5; # 5

El valor por defecto no se limita a cero. Puede ser cualquier valor que consideres un buen candidato, por ejemplo:

my $int is default(1);
say $int + 5; # 6

Quiz — Restricciones de tipo   |   Proxificación de llamadas a métodos


💪 O ve directamente a los ejercicios de esta sección.