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(); }
这会引发一个错误“如果没有包或对象引用,则无法调用方法“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"
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代码>在构造函数中没有。