考虑这个我创建哈希的程序.我想在其中更改两个值:
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+= …