的名單我有一個創建一個文檔對象包:的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
的哈希有兩個要素。在第二次迭代中,第二個$doc
的散列有四個元素(包括第一個元素中的兩個)。但是,當我使用該實體對象(創建的Document
數組),我得到:
- 文獻-1,其中x
- 文獻-2的散列大小與x的散列大小+ Y
- 文檔 - 3,散列大小爲x + y + z
爲什麼散列大小遞增? Document-3具有Document-1和Document-2中的所有散列內容。這是否與祝福或未定義變量有關?構造函數是否錯誤?
感謝:d
你所說的 「散列大小」 是什麼意思? – choroba 2014-11-22 17:36:43
哦,對不起,如果它不明確。我的意思是散列的總元素。因此,Document-2的散列具有Document-1散列的所有元素。 – 2014-11-22 17:39:05
這不是我得到的行爲。你的構造函數肯定是錯誤的,但也請顯示你的調用代碼。 – Borodin 2014-11-22 17:46:16