2

我有一个结构数组(来自 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 作为哈希等等。

4

1 回答 1

6

您的错误在于初始化@data

my @data = []; # the same as my @data = ( [] );

您声明调用的数组@data并使用一个 empy 数组 ref 对其进行初始化。接下来,您使用 将第二个元素推送到数组push。你的班级现在在$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";
于 2013-11-03T08:11:57.133 回答