我发现自己做了很多这样的构建:
my @listOfLists = ();
foreach (1..$count) {
my @temporaryList = ();
push @listOfLists, \@temporaryList;
}
有没有更少的打字,单行方式来做到这一点?请注意,这不起作用:
my @listOfLists = ([]) x $count;
它不起作用,因为各个项都指向对同一个空列表的引用。
答案 0 :(得分:6)
您可以在循环中使用匿名数组[...]
:
my @listOfLists;
for (1 .. $count) {
push @listOfLists, [];
}
for循环可伪装成地图:
my @listOfLists = map [], 1 .. $count;
这可能就是你想用x
做的。
另一件事是你经常不需要它。 Perl会在需要时为您自动生成数组:
my @lol;
$lol[2][4] = [ 'a' .. 'z' ];
print $lol[2][4][3]; # d