【问题标题】:Fill Multidimensional Array with two variables in loop在循环中用两个变量填充多维数组
【发布时间】:2019-11-28 10:26:36
【问题描述】:

我是 PERL 新手,我尝试在循环中得到以下结果:

# ResultFistStep.
$VAR1 = [
          [
            'Hello1'
          ],
          [
            'Hello2'
          ],
          [
            'Hello3'
          ],
        ];

但如果我使用 InnerArray \@InnerArray 的引用:

# Example1
my @OuterArray;
my @InnerArray;

foreach(1,2,3)
{
    @InnerArray[0] = "Hello" . $_;
    push(@OuterArray, \@InnerArray);
}
print Dumper \@OuterArray;

...我得到这个结果:

$VAR1 = [
          [
            'Hello3'
          ],
          $VAR1->[0],
          $VAR1->[0]
        ];

如果我在没有参考的情况下尝试:

# Example2
my @OuterArray;
my @InnerArray;

foreach(1,2,3)
{
    @InnerArray[0] = "Hello" . $_;
    push(@OuterArray, @InnerArray);
}
print Dumper \@OuterArray;

.. 我得到这个结果:

$VAR1 = [
          'Hello1',
          'Hello2',
          'Hello3'
        ];

但我想要的是开头显示的结果 (ResultFistStep) 和最后的某个点显示以下结果 (ResultFinally):

# ResultFinally
$VAR1 = [
          [
            'Hello1', 
            [
               [], 
               []
            ]
          ],
          [
            'Hello2', 
            [
               [], 
               []
            ]
          ],
          [
            'Hello3', 
            [
               [], 
               []
            ]
          ],
        ];

所以问题是:

  1. 我如何为 ResultFirstStep 完成这个结果?
  2. 我可以用 Perl 解决 ResultFinally 的问题吗?

请有人帮助我吗?我没有看到错误。

【问题讨论】:

    标签: perl for-loop multidimensional-array while-loop


    【解决方案1】:

    只使用匿名数组:

    my @outer;
    push @outer, [ "Hello$_", [ [], [] ] ] for 1 .. 3;
    

    甚至

    my @outer = map [ "Hello$_", [ [], [] ] ], 1 .. 3;
    

    如果您想使用内部数组,请在循环中声明它,否则您将一次又一次地重用同一个数组:

    my @outer;
    for (1 .. 3) {
        my @inner = ( "Hello$_", [ [], [] ] );
        push @outer, \@inner;
    }
    

    【讨论】:

      猜你喜欢
      • 2012-11-21
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 2016-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-18
      相关资源
      最近更新 更多