簡體   English   中英

對象內的Perl數組屬性

[英]Perl array attribute inside an object

試圖用OOP編寫一個perl模塊,但是它可以向數組添加一個對象,當我使用Dump方法時,它將輸出這樣的錯誤數據。 我的錯誤在哪里?

謝謝

bless( {
                 '_name' => 'CUSIP',
                 '_validation_array' => [],
                 '_seq' => '1'
               }, 'Field' );

源代碼:

 package Field;

    sub new {
    my $class = shift;
    my $self = {
        _name => shift,
        _seq => shift,
        _validation_array => [ @_ ],
    };

    bless($self, $class);
    return $self;
};

sub pushValidation(){
    my $validation = shift;   
    push(@{$self->{_validation_array}}, $validation);     
};

sub dump(){
    foreach my $validation (@{$self->{_validation_array} })   {
        #print Dumper($validation);#will work, 
        print $validation->{name}; #error, Use of uninitialized value
    }
}        
    1;

這就是我調用此方法的方式:

my $validationObj = new Validation($validation->{name}, $validation->{seq});
$field->pushValidation($validationObj);

我在這里看到了幾個問題,但最嚴重的是在這里:

sub pushValidation() {
    my $validation = shift;   
    push(@{$self->{_validation_array}}, $validation);     
};

該函數需要一個$self參數,但不會將其從參數中移出。 您需要添加use strict; 在您的Perl文件的頂部。 如果已啟用,則問題將立即顯而易見:

Global symbol "$self" requires explicit package name at <filename> line <line>.

dump()函數也是如此。 (順便說一句, dump是一個不好的方法名稱,因為有一個(同名的)Perl內置函數具有相同的名稱。但這不是一個大問題。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM