0

我有数据结构(如下所示),您能否让我知道如何填充以及随时以最简单的形式访问元素。哪种是最好的实现方式,例如哈希哈希或数组数组或其他任何东西?数组中不会有太多元素,唯一的问题是它是一种多级数组

%Array = (

    'Item0' => {
        'Name' => 'Item0_Name',
        'Attribs' => {
            'Attr1' => {
                'Name' => 'Attr1_Name',
                'Num'   => 'Attr1_Num'
            },      
            'Attr2' => {
                'Name' => 'Attr2_Name',
                'Num'   => 'Attr2_Num'
            }       
        }       
    },

    'Item1' => {
        'Name' => 'Item1_Name',
        'Attribs' => {
            'Attr1' => {
                'Name' => 'Attr1_Name',
                'Num'   => 'Attr1_Num'
            },      
            'Attr2' => {
                'Name' => 'Attr2_Name',
                'Num'   => 'Attr2_Num'
            }       
        }       
    }

);
4

1 回答 1

2

这方面的官方资源是 Perl Data Structure Cookbook ( perldoc perldsc)。

对于显示的数据,似乎一个 hashrefs 数组就足够了,因为 OP 中显示的键只是一个字符串化索引。同样的评论适用于“属性”:

my @array = (
              {
                  'Name' => 'Item0_Name',
                  'Attribs' => [
                                  {
                                      'Name' => 'Attr1_Name',
                                      'Num'  => 'Attr1_Num'
                                  },      
                                  {
                                      'Name' => 'Attr2_Name',
                                      'Num'   => 'Attr2_Num'
                                  }       
                               ],
              },
              {
                  'Name' => 'Item1_Name',
                  'Attribs' => [
                                  {
                                      'Name' => 'Attr1_Name',
                                      'Num'  => 'Attr1_Num'
                                  },      
                                  {
                                      'Name' => 'Attr2_Name',
                                      'Num'   => 'Attr2_Num'
                                  }       
                               ],
              },
           );
于 2012-09-04T07:39:37.140 回答