哪个上下文混淆了这个Perl 6 zip操作符?

bri*_*foy 9 perl6 zip-operator raku

考虑这个我创建哈希的程序.我想在其中更改两个值:

my $hash = %(
    wallet   => 100,
    gave     =>   0,
    received =>   0,
    );

for ^1 { $hash<wallet gave> Z+= <-1 1> };

dd $hash;
Run Code Online (Sandbox Code Playgroud)

像这样,最后一行for没有做任何事情,也没有警告.哈希值保持不变:

Hash $hash = ${:gave(0), :received(0), :wallet(100)}
Run Code Online (Sandbox Code Playgroud)

添加另一个语句会更改行为:

my $hash = %(
    wallet   => 100,
    gave     =>   0,
    received =>   0,
    );

for ^1 { $hash<wallet gave> Z+= <-1 1>; True };

dd $hash;
Run Code Online (Sandbox Code Playgroud)

现在inplace编辑做了它的事情,但是有一个警告(虽然当我找到它的用途时我争论"无用"):

Useless use of constant value True in sink context
Hash $hash = ${:gave(1), :received(0), :wallet(99)}
Run Code Online (Sandbox Code Playgroud)

如果我没有Z+=,它应该是相同的,它的工作原理:

my $hash = %(
    wallet   => 100,
    gave     =>   0,
    received =>   0,
    );

for ^1 { $hash<wallet gave> = $hash<wallet gave> Z+ <-1 1> }

dd $hash;
Run Code Online (Sandbox Code Playgroud)

再次正确的输出:

Hash $hash = ${:gave(1), :received(0), :wallet(99)}
Run Code Online (Sandbox Code Playgroud)

小智 1

这是一个错误。自 Rakudo 2018.02.1-45-g8a10fc1 起已修复