Não tenho certeza se isso é um bug, uma peculiaridade ou simplesmente uma prática ruim, mas é isso que acontece:
[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]]
Então, se você inicializar um array com uma lista de listas, ele é Slip
ped, forçando o uso de 2 passos para inicializá-lo. Há algo que eu esteja esquecendo aqui?
Note que para a inicialização de arrays, você não precisa do par externo de
[]
. Então seu primeiro exemplo pode ser escrito como:O que pode deixar a questão mais clara para você: é a regra de argumento único em ação (que BTW permite que você diga
for @a { }
). Então, ou você precisa fazer com que pareça mais argumentos adicionando uma vírgula (o que a torna uma Lista):ou você precisa itemizar o primeiro array (já que os itens nunca são implicitamente achatados):