gpt4 book ai didi

arrays - 如何遍历 Raku 哈希中的数组?

转载 作者:行者123 更新时间:2023-12-04 07:15:18 25 4
gpt4 key购买 nike

这似乎是一个简单的问题,但 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 个项目的数组数组。

你有几个选择:

可以绑定(bind)@arr%json{"arr"}my @arr := %json{"arr"}
或者您可以通过 %json{"arr"}到列表 my (@arr) = %json{"arr"}
你必须记住在 Raku Array 中是 Objects。

关于arrays - 如何遍历 Raku 哈希中的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59161864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com