Perl / OOP: Как создать объект "Класса B" в конструкторе "Класса A" - PullRequest
1 голос
/ 23 апреля 2019

У меня есть класс A со следующим конструктором:

sub new {
    my ($class, %args) = @_;

    return bless(\%args, $class);
}

У меня есть другой класс, LWP :: UserAgent, который я хочу использовать в своем классе А. Я мог бы решить проблему, выполнив это:

ua = LWP::UserAgent->new;

sub new {
    my ($class, %args) = @_;

    return bless(\%args, $class);
}

Но в этом случае у меня будет 1 объект UserAgent, но я хочу уникальный объект для каждого экземпляра моего класса A.

1 Ответ

4 голосов
/ 23 апреля 2019

Тогда вам нужно построить этот объект как атрибут

use LWP::UserAgent;

sub new {
    my ($class, %args) = @_;

    return bless { %args, lwp => LWP::UserAgent->new }, $class;
}

, и теперь каждый объект класса A будет иметь для атрибута lwp свой собственный LWP::UserAgent объект.

IКонечно, можно ожидать, что в действительности это хорошо написано со всей необходимой проверкой ошибок.

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