【问题标题】:pushing array inside array perl [closed]将数组推入数组 perl [关闭]
【发布时间】:2012-10-19 11:21:42
【问题描述】:

已编辑:

如何将@myarr 推送到 $menu(见下文)

my @myarr = (
                [ "itemone", "itemoneb", "itemonec" ],
                [ "itemtwo", "itemtwob", "itemtwoc" ],
                [ "itemthree", "itemthewwb", "itemthreec" ],
                [ "itemfour", "itemfourb", "itemfourc" ]
               );

$menu = [
         "List",
         ["itemone", \&ds2],
         ["itemtwo", \&ds2],
         ["itemthree", \&ds2],
         ["itemfour", \&ds2],
         [ "Do Something (second)", \&ds2 ]
     ];

【问题讨论】:

  • 您尝试了哪些方法,结果如何?阅读perlreftut 后应该不会那么难。 :)
  • 您是否试图将“itemoneb”和“itemonec”推入现有的arrayref 持有“itemone”? &ds2 是什么?
  • 为什么这不是一个真正的问题。很清楚问题是什么。

标签: arrays perl multidimensional-array


【解决方案1】:

这取决于你到底想做什么。

您可以直接推送数组:

push (@$menu, @myarr);

#results in:

[
     "List",
     ["itemone", \&ds2],
     ["itemtwo", \&ds2],
     ["itemthree", \&ds2],
     ["itemfour", \&ds2],
     [ "Do Something (second)", \&ds2 ],
     [ "itemone", "itemoneb", "itemonec" ],
     [ "itemtwo", "itemtwob", "itemtwoc" ],
     [ "itemthree", "itemthewwb", "itemthreec" ],
     [ "itemfour", "itemfourb", "itemfourc" ]
];

这会导致myarr元素被推送到menu,或者推送引用:

push (@$menu, \@myarr);

#results in:

[
     "List",
     ["itemone", \&ds2],
     ["itemtwo", \&ds2],
     ["itemthree", \&ds2],
     ["itemfour", \&ds2],
     [ "Do Something (second)", \&ds2 ],
     [
        [ "itemone", "itemoneb", "itemonec" ],
        [ "itemtwo", "itemtwob", "itemtwoc" ],
        [ "itemthree", "itemthewwb", "itemthreec" ],
        [ "itemfour", "itemfourb", "itemfourc" ],
     ],
];

实际上是推入数组(嵌套数组)。

【讨论】:

    【解决方案2】:

    你可以推它:

     use Data::Dumper;
     push (@$menu, @myarr);
     print Dumper($menu), "\n";
    

    【讨论】:

    • 这会将@myarr 的元素推入@$menu,以推入数组推入其引用push $@menu,\@myarr
    猜你喜欢
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 2012-03-22
    • 2013-01-14
    • 1970-01-01
    相关资源
    最近更新 更多