Массивы объектов в Perl? - PullRequest
       4

Массивы объектов в Perl?

3 голосов
/ 18 апреля 2011

Я новичок в Perl и серьезно затрудняюсь использовать его объектно-ориентированные функции, как я пришел из C ++, Python Background.Я хотел создать список объектов, но я не знаю, как этого добиться в 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 "без ссылки на пакет или объект".Любая помощь приветствуется.

1 Ответ

11 голосов
/ 18 апреля 2011

Исправленная версия вашего кода с комментариями:

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();
}

Возможно, вы захотите исследовать Лось

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...