Đây có vẻ là một câu hỏi đơn giản, nhưng Perl6 / Raku không hành xử như tôi mong đợi. Tôi đang cố gắng tạo một tham chiếu đến một mảng trong hàm băm, nhưng không nhận được hành vi mong đợi. Trong Perl5, câu trả lời sẽ liên quan đến việc truy cập mảng bằng cách tham chiếu, nhưng tôi không thấy cú pháp tương đương cho 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;
Làm cách nào để tôi có được một biến @arr mới để tham chiếu mảng lồng mà không có lớp chỉ mục [0] khó hiểu này? Đây có phải là một lỗi không, hay tôi thiếu một cái gì đó trong sự hiểu biết của tôi về xử lý Array / ref của Raku? Cảm ơn.
my @arr := %json<arr>
giải pháp là tốt nhất, vì nó không cần sao chép bất kỳ giá trị nào, cũng không cần tạo thêm bất kỳ đối tượng nào.