У меня есть пакет, который создает объект Document:Perl OO - Создание списка объектов
package Document;
sub new
{
my ($class, $id) = @_;
my $self = {};
bless $self, $class;
$self = {
_id => $id,
_title =>(),
_words =>()
};
bless $self, $class;
return $self;
}
sub pushWord{
my ($self, $word) = @_;
if(exists $self->{_words}{$word}){
$self->{_words}{$word}++;
}else{
$self->{_words}{$word} = 0;
}
}
я называю это:
my @docs;
while(counter here){
my $doc = Document->new();
$doc->pushWord("qwe");
$doc->pushWord("asd");
push(@docs, $doc);
}
На первой итерации первого $doc
«s хэш имеет два элемента. На второй итерации второй хеш $doc
имеет четыре элемента (в том числе два от первого). Но когда я, что сущность объекта (создать массив Document
), я получаю:
- Документ-1 с хэш размером х
- Документ-2 с хэш размером х + у
- document- 3 с размером хэша x + y + z
Почему размер хэша увеличивается? Документ-3 содержит все хеш-содержимое в документах-1 и документе-2. Связано ли это с благословением или неопределением переменной? Является ли конструктор неправильным?
спасибо: D
Что вы имеете в виду под "размером хэша"? – choroba
oh извините, если не понятно. Я имею в виду полный элемент хэша. Таким образом, хеш документа-2 имеет весь элемент хэша Document-1. –
Это не то поведение, которое я получаю. Ваш конструктор определенно ошибочен, но, пожалуйста, также покажите свой код вызова. – Borodin