我有一个结构体数组(来自Class::Struct),我在访问它们的“字段”时遇到了麻烦。我看过其他解决方案,例如Perl - Class::Struct Deferencing array和Perl文档,但均未成功。我的代码是:
use Class::Struct;
use Data::Dump qw(dump);
struct( Tag => {
attributes => '%',
value => '$'
});
my @data = [];
push @data, Tag->new(attributes => { 'id' => 1 }, value => "hello world!");
dump @data;
my $tag = $data[0];
my $value = $tag->value;
print $value, "\n";
我尝试了用'Tag'祝福$ tag的变体(因为无法调用unblessed的值是当前错误),将$ tag引用为哈希,等等。
最佳答案
您的错误在于@data
的初始化:
my @data = []; # the same as my @data = ( [] );
您声明一个名为
@data
的数组,并使用一个empy数组ref对其进行初始化。接下来,使用
push
将第二个元素推送到数组。您的 class 现在在$data[1]
中。如此固定的示例:
struct( Tag => {
attributes => '%',
value => '$'
});
my @data;
push @data, Tag->new(attributes => { 'id' => 1 }, value => "hello world!");
my $tag = $data[0];
my $value = $tag->value;
print $value, "\n";
关于perl - 访问数组中结构的字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19750942/