![](/img/trans.png)
[英]How do I iterate through an array of hashes of arrays once per hash, and not once per nested array element?
[英]How do I iterate through an array inside a Raku hash?
這似乎是一個簡單的問題,但 Perl6/Raku 的行為並不像我預期的那樣。 我正在嘗試在散列中創建對數組的引用,但沒有得到預期的行為。 在 Perl5 中,答案將涉及通過引用訪問數組,但我沒有看到 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;
如何獲得一個新的 @arr 變量來引用嵌套數組,而不會出現這種令人困惑的額外 [0] 索引層? 這是一個錯誤,還是我在理解 Raku 的 Array/ref 處理時遺漏了什么? 謝謝。
當您將鍵arr
的值分配給數組@arr
它會采用%json{'arr'}
中的值,即數組對象["alpha","beta","delta","gamma"]
並放置將它放入@arr
這樣您就可以得到一個包含 1 個項目的數組數組。
你有幾個選擇:
可以綁定@arr
到%json{"arr"}
與my @arr := %json{"arr"}
或者您可以將%json{"arr"}
傳遞給my (@arr) = %json{"arr"}
你必須記住在 Raku Array 中是對象。
像往常一樣,在寫完+發布我的問題后,我回答了我自己的問題。
my @arr = %json{'arr'}.Array;
我不太明白為什么這是必要的,但它提供了所需的行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.