Corso di Raku / Avanzato / Subroutine / Subroutine anonime / Exercises / Triplicare
Soluzione: Triplicare
Ecco una possibile soluzione del compito.
Codice
my $factor = 3;
my $scale = -> $x { $x * $factor };
say $scale(7);🦋 Puoi trovare il codice sorgente nel file triple-it.raku.
Output
21Commenti
Il blocco a freccia usa
$factor, una variabile dallo scope circostante, anche se ha solo un parametro$x. Catturare tali variabili e cio che lo rende una closure.Con
$factoruguale a3, chiamare$scale(7)da21. Cambiando$factor, lo stesso blocco scalerebbe con il nuovo valore:
$factor = 5;
say $scale(7); # 35Poiche la closure cattura la variabile piuttosto che il suo
valore al momento in cui e stata scritta, la chiamata successiva vede il
$factor aggiornato e restituisce 35.