[Perl] POO en Perl
Salvador Ortiz Garcia
sog@msg.com.mx
Fri, 08 Aug 2003 15:14:21 -0500
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é el tema de métodos
> > 'privados' (sí sí, soy terco), y me venía que si realmente quería hacer eso
> > es:
> >
> > my $nombre_metodo = sub {
> > my $this = shift;
> >
> > ...Todo_el_Choro...
> > };
> >
> > Y dentro de otros métodos, para accesar a este seria:
> >
> > $this->$nombre_metodo("argumentos");
> >
> > ahora les pregunto, que tan bueno y real es esto, realmente crea un método
> > privado (sí sí, soy terco, jej)
>
> Sí, puedes usar métodos privados de esta manera... Pero se vuelve feo y
> poco claro. Es válido, pero dentro del estilo de Perl la gente tiende a
> decirte que usar métodos privados es feo y no de cuates :)
Con el agravante adicional de que en realidad así estas creando un
"closure" con sus efectos asociados.
Respecto a si es un método prueba
$nombre_metodo->($this,"argumentos");
Y en todo caso te haría falta crear un ambito lexico propio para esos
"metodos", o correes el riesgo de:
package Foo::Bar;
sub new { return bless {}, __PACKAGE__ }
my $private = sub { "hola\n" };
sub callpriv { $_[0]->$private() }
package main;
my $obj = new Foo::Bar;
print $obj->callpriv;
$private = 'adios';
print $obj->callpriv;
Saludos,
[ oops, teclazo anticipado en mail anterior ]
--
Salvador Ortiz Garcia <sog@msg.com.mx>
Matías Software Group