[Perl] POO en Perl
Pablo Fischer
pablo@pablo.com.mx
Fri, 8 Aug 2003 15:40:34 +0000
Gracias a Gunnar y a Salvador!
Ya qued=F3 claro :-)
salu2!
El d=EDa Friday 08 August 2003 8:14 a Salvador Ortiz Garcia mand=F3 el sigu=
iente=20
correo:
> On Fri, 2003-08-08 at 13:16, Gunnar Wolf wrote:
> > Pablo Fischer dijo [Fri, Aug 08, 2003 at 12:01:25PM +0000]:
> > > Gracias!
> > >
> > > De hecho despues de haber mandado el correo, encontr=E9 el tema de
> > > m=E9todos 'privados' (s=ED s=ED, soy terco), y me ven=EDa que si real=
mente
> > > quer=EDa hacer eso es:
> > >
> > > my $nombre_metodo =3D sub {
> > > my $this =3D shift;
> > >
> > > ...Todo_el_Choro...
> > > };
> > >
> > > Y dentro de otros m=E9todos, para accesar a este seria:
> > >
> > > $this->$nombre_metodo("argumentos");
> > >
> > > ahora les pregunto, que tan bueno y real es esto, realmente crea un
> > > m=E9todo privado (s=ED s=ED, soy terco, jej)
> >
> > S=ED, puedes usar m=E9todos privados de esta manera... Pero se vuelve f=
eo y
> > poco claro. Es v=E1lido, pero dentro del estilo de Perl la gente tiende=
a
> > decirte que usar m=E9todos privados es feo y no de cuates :)
>
> Con el agravante adicional de que en realidad as=ED estas creando un
> "closure" con sus efectos asociados.
>
> Respecto a si es un m=E9todo prueba
>
> $nombre_metodo->($this,"argumentos");
>
> Y en todo caso te har=EDa falta crear un ambito lexico propio para esos
> "metodos", o correes el riesgo de:
>
> package Foo::Bar;
>
> sub new { return bless {}, __PACKAGE__ }
> my $private =3D sub { "hola\n" };
> sub callpriv { $_[0]->$private() }
>
> package main;
>
> my $obj =3D new Foo::Bar;
> print $obj->callpriv;
> $private =3D 'adios';
> print $obj->callpriv;
>
> Saludos,
>
> [ oops, teclazo anticipado en mail anterior ]
=2D-=20
Pablo Fischer Sandoval (pablo@pablo.com.mx)
http://www.pablo.com.mx
http://www.debianmexico.org
GPG FingerTip: 3D49 4CB8 8951 F2CA 8131 AF7C D1B9 1FB9 6B11 810C
=46irma URL: http://www.pablo.com.mx/firmagpg.txt