[Perl] Fragmento de un closure ...
Manuel Rabade
mig@mig-29.net
Mon, 13 Oct 2003 22:57:08 -0500
On Mon, Oct 13, 2003 at 09:35:09PM -0500, Sergio Rojas wrote:
> Saludos Perleros!
>
> Tengo el siguiente fragmento de un closure:
>
> 1 sub plantilla{
> 2 my $x = $_[0];
> 3 return sub {
> 4 print "$x $_[0] \n";
> 5 }
> 6 }
>
>
> La pregunta es: porque el escalar $x conserva su valor en las lineas
> 2 y 4, y el elemento del arreglo $_[0] no. Se sobreescribe o algo asi
> al llamar la subrutina anidada?
>
Poruque el arreglo @_ contiene los parametros pasados a una subrutina y al
invocar 'sub' se limpia @_ y se le cargan los valores que le pasas, en este caso
ninguno.
Ademas por el ambito de $x conservara su valor en todo el bloque en el que fue
declarada (de la linea 1 a 6).
Corrijanme si me equivoco gurus de la lista :-P.
Saludos