我不完全确定这是一个错误,一个怪癖,还是仅仅是一种不好的做法,但事实是这样的:
[0] > my @nope = [["a","b"]]; @nope.push: ["b","c"]
[a b [b c]]
[1] > my @yipee = []; @yipee.push: [["a","b"]]; @yipee.push: ["b","c"]
[[a b] [b c]]
因此,如果您使用列表列表初始化数组,它将被Slip
ped,从而强制使用 2 个步骤来初始化它。我这里遗漏了什么吗?
请注意,对于数组的初始化,不需要外部对
[]
。因此,您的第一个例子可以写成:这可能会让您更清楚地了解问题:这是工作中的单一参数规则(顺便说一下,它允许您这样说
for @a { }
)。因此,您需要通过添加逗号(使其成为列表)使其看起来像更多参数:或者您需要逐项列出第一个数组(因为项目永远不会被隐式展平):