1

次のデータ構造を何と呼ぶか​​わかりません:ハッシュまたは配列。

3番目の要素を追加しようとしています。誰かが私を案内してくれませんか。私はperlとこのフォーラムに不慣れなので、いくつかの説明をいただければ幸いです。

既存の構造:

my $var= [
          bless( {
                   'name' => 'Name1',
                   'groupid' => '2',
                   'description' => 'Desc2'
                 }, 'my_type' ),
          bless( {
                   'name' => 'Name2',
                   'groupid' => '4',
                   'description' => 'Desc3'
                 }, 'my_type' ),
];

以下を追加したいと思います。

bless( {
       'name' => 'Name3',
       'groupid' => '9',
       'description' => 'Desc4'
     }, 'my_type' ),

お手数をおかけしますが、よろしくお願いいたします。

4

3 に答える 3

4

あなた$varは「arrayref」です。

配列を使用するpushと、最後に要素を作成できます。

my @a = (1, 2, 3);
push @a, 4;
print "@a"; # "1 2 3 4"

arrayrefを配列として使用するには、それを逆参照する必要があります。

my $a = \@a;
push @{ $a }, 5;
print "@{$a}"; # "1 2 3 4 5"

これらの単純なケースでは、間接参照を短縮できるため、次のように記述できます。

push @$a, 5; # sic! two sigils

あなたの場合、これは

push @$var, bless(...);
于 2012-09-21T14:46:38.380 に答える
0

それはarrayrefです。要素をarrayrefにプッシュします。

push( @{ $var }, $obj );

ここで、objectは、追加する祝福されたオブジェクトです。

これはarrayrefであるため、'push'は配列への参照ではなく配列を想定しているため、配列を逆参照して何かをプッシュする必要があります。

于 2012-09-21T14:46:36.087 に答える
0

次のデータ構造を何と呼ぶか​​わかりません:ハッシュまたは配列。

$ varは、オブジェクトの配列への参照です。

追加は簡単です:

my $obj = bless( { #Create object
   'name' => 'Name3',
   'groupid' => '9',
   'description' => 'Desc4'
}, 'my_type' ),
push( @$var, $obj ); #Add
于 2012-09-21T17:16:46.610 に答える