如何将数组"转换"成列表?

Ωme*_*ega -4 arrays perl

我需要使用功能cartesianList::Gen.这个函数需要LIST作为第二个参数,但我有一个数组,比如

$VAR1 = [
          [
            1,
            2,
            3
          ],
          [
            'a',
            'b',
            'c'
          ],
          [
            'x'
          ]
        ];
Run Code Online (Sandbox Code Playgroud)

如何将这样的数组"转换"成列表,这样cartesian可以使用?在这种情况下,将数组放入列表上下文似乎不起作用.

ike*_*ami 6

Parens不会创建列表,只是更改优先级.

@a = ((1, 2, 3), (7, 8, 9));
Run Code Online (Sandbox Code Playgroud)

是相同的

@a = (1, 2, 3, 7, 8, 9);
Run Code Online (Sandbox Code Playgroud)

示例cartesian显示了对数组的引用列表

cartesian { $_[0] . $_[1] } [1,2,3], [7,8,9];
Run Code Online (Sandbox Code Playgroud)

所以看起来你想要创建一个包含两个元素的数组,每个元素都引用另一个数组.

@a = ( [1,2,3], [7,8,9] );
Run Code Online (Sandbox Code Playgroud)

然后,为了回答您的问题,@a在列表上下文中进行评估将返回这两个引用.

cartesian { $_[0] . $_[1] } @a;
Run Code Online (Sandbox Code Playgroud)

  • @Ωmega`@ a =((1,2,3),(7,8,9))`不是数组数组.这只是一个阵列.`使用Data :: Dumper; 打印Dumper\@a;`为自己看看. (4认同)