对象返回随机数,而不是perl中的值
我有这个PM类文件:对象返回随机数,而不是perl中的值,perl,Perl,我有这个PM类文件: use strict ; use warnings; package Math; sub new{ my $class = shift; my $self = {}; bless($self, $class); return $self; } sub add{ my $x = shift; my $y = shift; return $x + $y; } sub substract{ my $x
use strict ;
use warnings;
package Math;
sub new{
my $class = shift;
my $self = {};
bless($self, $class);
return $self;
}
sub add{
my $x = shift;
my $y = shift;
return $x + $y;
}
sub substract{
my $x = shift;
my $y = shift;
return $x - $y;
}
sub multiple{
my $x = shift;
my $y = shift;
return $x * $y;
}
sub divide{
my $x = shift;
my $y = shift;
return $x / $y;
}
1;
我有一个主测试pl文件:
use strict ;
use warnings;
use Math;
my $math_action = new Math();
my $number1 = 5;
my $number2 = 3;
my $results = $math_action->add($number1, $number2);
print $results;
出于某种原因,每次跑步我都会随机得到奇怪的结果。
可能很简单(?)我很久没有接触perl了,挖了一个小时来寻找解决方案找不到…任何帮助都将不胜感激。当您在perl中使用OOP时,每个方法的第一个参数都是您所祝福的
sub new{
my $class = shift;
my $self = {}; <-- this hashref
bless($self, $class);
return $self;
}
sub add{
my $self = shift; <-- is the first argument in methods
my $x = shift;
my $y = shift;
return $x + $y;
}
sub-new{
我的$class=shift;
my$self={};当您在perl中使用OOP时,每个方法的第一个参数都是您需要的
sub new{
my $class = shift;
my $self = {}; <-- this hashref
bless($self, $class);
return $self;
}
sub add{
my $self = shift; <-- is the first argument in methods
my $x = shift;
my $y = shift;
return $x + $y;
}
sub-new{
我的$class=shift;
my$self={};这在Perl6是不可能的,以过程子例程调用的方式访问对象方法作为类方法。但是现在您可以调用这些方法,而无需引用抛出一个实例resp.object,每个人都认为这很好:
例如:打印添加(2,3)。在您的情况下,当您忘记了受祝福的引用变量的声明和定义时
干杯。这在Perl6是不可能的,以过程子例程调用的方式访问对象方法作为类方法。但是现在您可以调用这些方法,而无需引用抛出一个实例响应对象,并且每个人都认为这很好:
例如:打印添加(2,3)。在您的情况下,当您忘记了受祝福的引用变量的声明和定义时
干杯。第一个参数是$self
。请编写代码,我尝试传递3个参数,但出现了相同的随机结果。第一个参数是$self
。请编写代码,我尝试传递3个参数,但出现了相同的随机结果。感谢它现在的工作,有没有办法让我删除$self并只保留v我实际需要并使用的变量,在每个子类中声明$self似乎有点奇怪。perl$self中的@user3906716用于存储程序状态。这样,每个方法都可以访问对象的内部状态并检索或存储对象变量。因此,如果您想使用$self编程,就不可能去掉$selfPerl中的OOP范例。@user3906716您可以调用函数,如Math::add($number1,$number2)
但是你不使用对象,而是调用数学名称空间中的一个方法。这就像在c++/Java中调用一个静态方法一样再次感谢Murphy,我现在做了更改,我将在将来使用示例。我在3年前使用了很多perl,但主要是使用sub而不创建类,现在我终于回到它。我正在挖掘一个小时。再次感谢:-)@user3906716很高兴我能帮忙:)感谢它现在的工作,有没有办法删除$self并只保留我实际需要和使用的变量,在每个子部分声明$self似乎有点奇怪。perl$self中的@user3906716用于存储程序状态。这样每个方法都可以访问对象的内部状态,并检索或存储对象变量。因此,如果要使用Perl中的OOP范例进行编程,则无法删除$self。@user3906716您可以调用函数,如Math::add($number1,$number2)
但是你不使用对象,而是调用数学名称空间中的一个方法。这就像在c++/Java中调用一个静态方法一样再次感谢Murphy,我现在做了更改,我将在将来使用示例。我在3年前使用了很多perl,但主要是使用sub而不创建类,现在我终于回到它。我正在挖掘一个小时。再次感谢:-)@user3906716很高兴我能帮上忙:)@user3906716这里的人通常+1答案/问题如果他们觉得有用的话,我可以建议添加一点解释,解释一下为什么这样做以及OP做错了什么吗?@Benjamin W。上面已经提到过,OP向一个函数发送了3个参数,同时打算发送2I如果你提到这一点,你会觉得作为一个独立的实体,你的答案会更好。@user3906716这里的人通常+1个答案/问题,如果他们觉得有用,我可以建议添加一点解释,解释一下为什么这样做以及OP做错了什么吗?@Benjamin W。上面已经提到过,OP向一个函数发送了3个参数,虽然打算发送2,但我认为如果您提到这一点,作为一个独立实体,您的回答会更好。