Perl中是否可以嵌套关联数组?

3

有关嵌套功能的学术问题。

例如:

%inner = (1, "monday", 2, "tuesday"...);
%outer = ("hello", 1, "days", %inner);

1
是的 - 你可以嵌套数组(或者至少是对数组的引用)在更多或更少的任意层级。这适用于普通数组和哈希(关联数组)。 - Jonathan Leffler
请参阅 https://perldoc.perl.org/perldsc。 - Shawn
有关此主题的简要教程介绍,请参见:Mark关于引用的非常简短的教程 - Grant McLean
2个回答

11

哈希表中的值始终为标量,但它可以是一个哈希引用。

my %outer = (hello => 1,
             days  => \%inner);

或者您可以直接输入匿名散列:

my %outer = (hello => 1,
             days  => {1 => 'Monday',
                       2 => 'Tuesday',
                       ...});

没有引用时,“嵌套”的哈希会被平铺,这有时用于覆盖默认值:

my %conf = (%default, %specific);

2

好的,您可以尝试一下。如果您传递第一个哈希的引用,您可以将其存储为嵌套结构。

use Data::Dumper;

%inner = (1, "monday", 2, "tuesday"); 
%outer = ("hello", 1, "days", \%inner);
print(Dumper(\%outer));
print($outer{'days'}{2});

输出

$VAR1 = {
          'hello' => 1,
          'days' => {
                      '2' => 'tuesday',
                      '1' => 'monday'
                    }
        };
tuesday

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接