Curso de Raku / Avanzado / Subrutinas

Subrutinas anidadas

Una subrutina puede definirse dentro de otra subrutina. Una subrutina anidada es una subrutina normal, pero solo es visible dentro de la subrutina que la contiene.

sub outer {
    sub inner {
        say 'I am the inner subroutine';
    }

    inner;
}

outer;

El programa imprime:

I am the inner subroutine

Aquí inner se declara dentro de outer, y outer la llama. Esto funciona porque inner está en el ámbito durante todo el cuerpo de outer.

Fuera de outer, sin embargo, el nombre inner no existe. El siguiente programa no compila:

sub outer {
    sub inner { 42 }
}

inner; # error: Undeclared routine: inner

La anidación es útil cuando una rutina auxiliar solo es necesaria para una subrutina. Mantenerla dentro deja claro que es un detalle privado y evita que sea llamada desde cualquier otro lugar por error.

Práctica

Resuelve 1 cuestionario sobre el contenido de este tema.

Ejercicios

Esta sección contiene 3 ejercicios. Mira todos los temas de esta sección antes de empezar los ejercicios.

  1. Un ayudante privado
  2. Clausura sobre lo externo
  3. Una suma interna

Quiz — Uso de MAIN   |   Un ayudante privado