Curso de Raku / Avanzado / Subrutinas / Firmas / Exercises / Argumentos nominales slurpy

Solución: Argumentos nominales slurpy

Aquí está una posible solución a la tarea.

Código

sub describe($name, *%opts) {
    my $details = %opts.sort.map({ "{.key}={.value}" }).join(', ');
    "$name: $details";
}

say describe('Anna', colour => 'red', size => 5);

🦋 Encuentra el programa en el archivo slurpy-hash.raku.

Salida

Anna: colour=red, size=5

Comentarios

  1. El parámetro posicional fijo $name se llena primero, y el slurpy *%opts reúne cada argumento nombrado restante en un hash.

  2. %opts.sort ordena los pares por clave, de modo que la salida es determinista: colour va antes que size. El .map convierte cada par en una cadena key=value usando .key y .value, y .join(', ') los une.

  3. La cadena final interpola $name y el $details ensamblado, produciendo Anna: colour=red, size=5.

Argumentos nominales slurpy   |   Quiz — Parámetros slurpy