gpt4 book ai didi

raku - 为什么有时我们必须使用强制来访问数组的单个元素?

转载 作者:行者123 更新时间:2023-12-05 03:17:21 25 4
gpt4 key购买 nike

我的理解是,在下面的代码中我不必使用 (2),只需 (1) 就足以在其自己的行中打印数组的每个元素。

$ cat test-hash.raku                            
use v6;

my %h;

say "";
say "inserts a scalar";
%h.push: (aaa => "aaa");
%h.say;

say "";
say "turns the scalar into an array";
%h.push: (aaa => "AAA");
%h.say;

say "";
say "(1) shows all elements of the array in a line";
.say for %h{"aaa"};

say "";
say "(2) shows each element of the array in a line";
.say for %h{"aaa"}.Array;

$ raku test-hash.raku

inserts a scalar
{aaa => aaa}

turns the scalar into an array
{aaa => [aaa AAA]}

(1) shows all elements of the array in a line
[aaa AAA]

(2) shows each element of the array in a line
aaa
AAA

$

最佳答案

您可能会争辩说这是 Array.push 实现中的一个错误,因为它分配一个数组给哈希元素,而不是绑定(bind) 给它。因为它分配,数组存在于标量容器中,并且被有效地逐项列出。并且被逐项列出,它不会被迭代。

因此,最简单的解决方案是在迭代之前对 Hash 元素进行去条目化:

.say for %h{"aaa"}<>;

参见 decontainerization operator了解更多信息。

关于raku - 为什么有时我们必须使用强制来访问数组的单个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74138682/

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