Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays perl中的对象数组? 我是Perl新手,很难用面向对象的特性来实现它,因为我来自C++,Python背景。 我想创建一个对象列表,但我不知道如何在perl中实现这一点。我从一个数组开始,但它似乎不起作用 package X; sub new { ..... } package Y; sub new { ..... } package Z; my @object_arr = ( X::new, Y::new); foreach $object (@object_arr) { $object->xyz(); }_Arrays_Perl_Object_Constructor - Fatal编程技术网

Arrays perl中的对象数组? 我是Perl新手,很难用面向对象的特性来实现它,因为我来自C++,Python背景。 我想创建一个对象列表,但我不知道如何在perl中实现这一点。我从一个数组开始,但它似乎不起作用 package X; sub new { ..... } package Y; sub new { ..... } package Z; my @object_arr = ( X::new, Y::new); foreach $object (@object_arr) { $object->xyz(); }

Arrays perl中的对象数组? 我是Perl新手,很难用面向对象的特性来实现它,因为我来自C++,Python背景。 我想创建一个对象列表,但我不知道如何在perl中实现这一点。我从一个数组开始,但它似乎不起作用 package X; sub new { ..... } package Y; sub new { ..... } package Z; my @object_arr = ( X::new, Y::new); foreach $object (@object_arr) { $object->xyz(); },arrays,perl,object,constructor,Arrays,Perl,Object,Constructor,这会引发一个错误“如果没有包或对象引用,则无法调用方法“xyz”。非常感谢您的帮助。您的代码的固定版本以及注释如下: package X; # You need to return a blessed object sub new { my $self = bless {}, "X"; return $self; } # You need to define xyz before calling it sub xyz { print "X"

这会引发一个错误“如果没有包或对象引用,则无法调用方法“xyz”。非常感谢您的帮助。

您的代码的固定版本以及注释如下:

package X;

# You need to return a blessed object 
sub new { 
        my $self = bless {}, "X";
        return $self;
}

# You need to define xyz before calling it
sub xyz {
        print "X";
}

package Y;

sub new {
        my $self = bless {}, "Y";
        return $self;

}


sub xyz {
        print "Y";
}

package Z;

# You need to call the new method
my @object_arr = ( X->new(), Y->new());

# Don't forget to my when defining variables (including $object)
foreach my $object (@object_arr) {
  $object->xyz();
}

您可能还想调查驼鹿的

+1。来自一个类似的OO背景,我能说的就是我不明白你为什么不
使用Moose
。当你开始从X类或Y类派生时,这一点就会打破。你应该说
我的$class=shift;我的$self=bless{},$class在构造函数中没有。