相关疑难解决方法(0)

Perl数组vs列表

我在Perl中有两个数据结构:

数组:

my @array2 = ( "1", "2", "3");

for $elem (@array2) {
    print $elem."\n";
}
Run Code Online (Sandbox Code Playgroud)

给我以下输出:

1
2
3
Run Code Online (Sandbox Code Playgroud)

还有一个清单:

my @array = [ "1", "2", "3"];                                            

for $elem (@array) {
    print $elem."\n";
}
Run Code Online (Sandbox Code Playgroud)

给出以下输出:

ARRAY(0x9c90818)
Run Code Online (Sandbox Code Playgroud)

显然,我想在两种情况下迭代元素,但为什么第二种解决方案只给我这个数组的引用?

arrays perl perl-data-structures

41
推荐指数
4
解决办法
5万
查看次数

Raku 中超级运算符的结果类型

我很好奇什么规则决定了包括超级运算符在内的表达式的类型。让我们考虑一下这四种位置:

\n
my $ca = [1, 2];   # containerized array  $[1, 2]\nmy $ua := [1, 2];  # uncontanerized array [1, 2]\nmy $cl = (1, 2);   # containerized list   $(1, 2)\nmy $ul := (1, 2);  # uncontainerized list (1, 2)\n
Run Code Online (Sandbox Code Playgroud)\n

我观察到,评估x \xc2\xab+\xc2\xbb y、 其中xy取自上面,会产生一个x类型的对象(续/非续;数组/列表),例如$cl \xc2\xab+\xc2\xbb $uais $(2, 4)

\n

然而,该表达式0 \xc2\xab+\xc2\xbb y是 s 类型的对象y,尽管文档声称首先将左侧转换为列表。确实1 \xc2\xab+\xc2\xbb $ua如此[1, 2],尽管我也希望如此(1, 2)

\n …

raku

7
推荐指数
0
解决办法
95
查看次数

列表似乎被重用,但裸值工作正常

这:

my %dict;
my $counter = 0;
for ^5 -> $digit {
        %dict{$digit} = ($counter,);
        $counter += 1;
}
say %dict;
Run Code Online (Sandbox Code Playgroud)

给了我这个: {0 => (5), 1 => (5), 2 => (5), 3 => (5), 4 => (5)},但我期望这个: {0 => (0), 1 => (1), 2 => (2), 3 => (3), 4 => (4)} 分配一个裸值,一个数组或散列按我的预期工作。

raku

5
推荐指数
1
解决办法
107
查看次数

标签 统计

raku ×2

arrays ×1

perl ×1

perl-data-structures ×1