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)