Página 1 de 1

Clase en Perl

NotaPublicado: 2016-04-04 12:14 @551
por BigBear
Hola, estoy estudiando POO en este código:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. package persona;
  2.  
  3. sub new {
  4.     my $class = shift;
  5.     my $self = {};
  6.     bless $self,$class;
  7.     return $self;
  8. }
  9.  
  10. sub setName {
  11.     my ($self,$n) = @_;
  12.     $self->{NOMBRE} = $n;
  13. }
  14.  
  15. sub getName {
  16.     my $self = shift;
  17.     #$self->borraNombre();
  18.     if ($self->{NOMBRE}) {
  19.         return $self->{NOMBRE};
  20.     } else
  21.     {
  22.         return "Sin sombre";
  23.     }
  24. }
  25.  
  26. sub borraNombre {
  27.     my $self = shift;
  28.     if ($self->{NOMBRE})
  29.     {
  30.         $self->{NOMBRE} = "Borre el nombre";
  31.     }
  32. }
  33. sub destruye
  34. {
  35.    my $self=shift;
  36.    delete ($self->{NOMBRE});
  37. }
  38. 1;
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


Quería saber si podía agregar un segundo new() con los parámetros de la clase como normalmente en la clases de C# y Java.

Algo así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. new($nombre,$lugar,$dinero);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


¿ Se puede o no está permitido ?

Re: Clase en Perl

NotaPublicado: 2016-04-04 17:06 @754
por explorer
Con el sistema básico de POO de Perl, no. Tienes que darle otro nombre al método.

Hay muchos otros sistemas y módulos de Perl que sí lo permiten. En Moose, por ejemplo, ni siquiera hay que crearlo :)

En Perl, no hay una palabra reservada para el constructor. Por defecto, se le llama new(), pero podrías llamarlo de cualquier otra forma.

Así que, lo más sencillo, es darle un nombre distinto a cada constructor. O dentro del constructor, comprobar qué argumentos recibes, y comportarte de una manera o de otra.

El mejor consejo, es aprender Moose, desde luego.

Más información en tu propio ordenador en perldoc perlootut, y en la Web (traducido al español).

Programación Orientada a Objetos (Tutorial sobre POO, de la Universidad de la Laguna).