J'essaie de définir et d'obtenir les valeurs dans les classes utilisant perl.Comment définir et utiliser class en perl?
ci-dessous est ma classe parente math.pm
.
use strict;
package math;
sub new
{
my $class=shift;
my $self={};
bless($self,$class);
return $self;
}
sub set_number
{
my $self=shift;
my $self->{'num'}=shift;
}
sub get_number
{
my $self=shift;
return $self->{'num'};
}
sub add
{
my $self=shift;
my $num1=shift;
my $num2=shift;
return $num1 + $num2;
}
sub multiply
{
my $self=shift;
my $num1=shift;
my $num2=shift;
return $num1 * $num2 ;
}
1;
ci-dessous est le script d'où im appelant la classe parente math
dans une classe dérivée appelée operations
use strict;
use math;
package operations;
our @ISA = qw/math/;
my $number_obj1=operations->new();
my $number_obj2=operations->new();
my $number_obj3=operations->new();
$number_obj1->set_number("23");
$number_obj2->set_number("24");
my $num1=print $number_obj1->get_number();
my $num2=print $number_obj2->get_number();
print "\n\$num1:$num1\n\$num2:$num2\n";
print "addition: ",$number_obj3->add("$num1","$num2"),"\n";
print "multiplication: ",$number_obj3->multiply("$num1","$num2"),"\n";
sortie incorrecte:
$num1:1
$num2:1
addition: 2
multiplication: 1
dans le script ci-dessus je ne suis pas en mesure pour extraire les valeurs dans $num1
et $num2
en utilisant le sous-programme get_number
.
Où vais-je mal?
S'il vous plaît noter que par convention, les paquets de Perl doivent commencer par une lettre majuscule. Le nom correct pour votre classe serait 'Math', pas' math'. Tous les noms minuscules sont réservés à _pragmas_ comme 'strict'. – simbabque
Je vous suggère de publier ce code sur [codereview.se]. Il y a quelques problèmes stylistiques ainsi qu'un peu de connaissances générales Perl qui vous semblent manquer. Je crois que vous bénéficieriez grandement d'un examen du code approprié. – simbabque
Notez que 'operations' est un programme simple, pas une classe dérivée du tout (il n'a pas de méthodes, pas même un constructeur). Vous devez omettre l'instruction 'package' et l'affectation à' @ ISA'. – Borodin