Parece uma pergunta simples, mas Perl6 / Raku não está se comportando como eu esperava. Estou tentando criar uma referência a uma matriz dentro de um hash, mas não estou obtendo o comportamento esperado. No Perl5, a resposta envolveria o acesso à matriz por referência, mas não vejo sintaxe equivalente para o Perl6 / Raku.
my $jsonstr = q:to/END/;
{
"arr" : [
"alpha","beta","delta","gamma"
]
}
END
my %json = from-json $jsonstr;
my @arr = %json{'arr'};
say "Arr length is " ~ @arr.elems; # Expect 4, get 1
say "Orig length is " ~ %json{'arr'}.elems; # Get expected value of 4
say "Arr[0] is " ~@arr[0].^name ~ " of length " ~ @arr[0].elems; # First index is array
say %json{'arr'}[0]; # Indexing into array in original location works as expected
say @arr[0][0]; # But when assigned, it needs an extra index
my @arr2 = @arr[0]; # Same issue in re-assignment here
say "Arr2[0]: " ~ @arr2[0] ~ ", length of " ~ @arr2.elems;
Como obtenho uma nova variável @arr para referenciar a matriz aninhada sem essa camada de índice extra [0] confusa? Isso é um bug ou estou faltando alguma coisa no meu entendimento sobre a manipulação de Raku's Array / ref? Obrigado.
my @arr := %json<arr>
solução é a melhor, pois não precisa copiar nenhum valor nem criar objetos adicionais.