2016-06-16 9 views
0

私は2つの同様の構文を試しました。この最初の1作品:Perl - オブジェクトの配列を構築できません

my $obj = PI::something::ObjectManipulator->new(); 
    $obj->setValue('HELLO'); 
    my $objList = [$object]; 

これを、しかし、しません:

my $objList= []; 
    foreach my $value (@values) { 
    my $obj = PI::something::ObjectManipulator->new(); 
    $obj->setValue($value); 
    push @$objList, $obj; 
    }; 

物事のこれらの二つの方法の違いは何ですか?なぜ二番目の仕事はありませんか? ($ OBJLISTは、コードの末尾に空のままであることのようです、動作しないことによって。)

+5

ここからよく見えます。 '@ values'が空リストではないと確信していますか? – mob

答えて

4

my $objList = [$object];を想定しmy $objList = [$obj];ための誤植である、と仮定して、my @values = 'HELLO';、違いはありません。

$objListがまだ空です」と言われたときに「@$objListがまだ空です」とすると、ループが入力されていない場合(つまり、@valuesが空の場合)にのみ発生します。

関連する問題