我試圖設置和獲取使用類的perl中的值。如何在perl中設置和使用類?
以下是我的父類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;
下面
是從哪兒IM調用父類math
在派生類中調用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";
不當輸出腳本:在上面的腳本
$num1:1
$num2:1
addition: 2
multiplication: 1
我不能使用get_number
子例程將值提取到$num1
和$num2
。
我哪裏錯了?
請注意,按照慣例,在Perl軟件包名稱應以大寫字母開頭。你的班級的正確名字是'Math',而不是'math'。所有小寫名稱都保留給像'strict'這樣的_pragmas_。 – simbabque
我建議你在[codereview.se]上發佈這段代碼。有一些風格問題,以及一些你看起來缺乏的Perl常識。我相信你會從正確的代碼審查中受益匪淺。 – simbabque
請注意,'操作'是一個簡單的程序,根本不是派生類(它沒有方法,甚至沒有構造函數)。你應該省略'package'語句和賦值給'@ ISA'。 – Borodin