Curso de Raku / Avanzado / Control de flujo / Prefijos de sentencia
sink y quietly
Dos prefijos más se ocupan de ejecutar código por sus efectos en lugar de por su valor.
El prefijo sink evalúa algo en contexto sink
(de hundimiento), puramente por sus efectos secundarios, descartando el
resultado. Es útil con una operación perezosa que quieres forzar a
ejecutarse:
sink (1..3).map({ print "$_ " });
print "\n"; # 1 2 3El map aquí se ejecuta solo por la impresión que
realiza; sink se asegura de que realmente se ejecute y
descarta la lista resultante. Sin forzarlo, un map perezoso
cuyo resultado nunca se usa podría no ejecutarse en absoluto.
El prefijo quietly ejecuta un bloque con sus
advertencias suprimidas. El código que normalmente
imprimiría una advertencia en el flujo de error permanece en
silencio:
my $value;
quietly {
say $value + 1; # 1, with no "uninitialized value" warning
}Sumar 1 a un $value indefinido normalmente
advierte sobre el uso de un valor no inicializado, pero dentro de
quietly esa advertencia se oculta. Úsalo cuando a propósito
hagas algo que genera advertencias y no quieras el ruido, pero con
moderación, ya que las advertencias generalmente señalan un error
real.
Práctica
Resuelve 1 cuestionario sobre el contenido de este tema.
Navegación del curso
← Pereza y ansiedad | Quiz — Prefijos de sentencia →
💪 O ve directamente a los ejercicios de
esta sección.