• Publicidad

Clase en Perl

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Clase en Perl

Notapor BigBear » 2016-04-04 12:14 @551

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.003 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 ?
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Publicidad

Re: Clase en Perl

Notapor explorer » 2016-04-04 17:06 @754

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).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron