首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪个上下文让这个Perl 6 zip操作符感到困惑?

哪个上下文让这个Perl 6 zip操作符感到困惑?
EN

Stack Overflow用户
提问于 2017-07-10 06:56:44
回答 1查看 265关注 0票数 9

考虑下面的程序,我在其中创建了一个散列。然后,我想更改其中的两个值:

代码语言:javascript
复制
my $hash = %(
    wallet   => 100,
    gave     =>   0,
    received =>   0,
    );

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

dd $hash;

像这样,for的最后一行没有做任何事情,也没有任何警告。散列是不变的:

代码语言:javascript
复制
Hash $hash = ${:gave(0), :received(0), :wallet(100)}

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

代码语言:javascript
复制
my $hash = %(
    wallet   => 100,
    gave     =>   0,
    received =>   0,
    );

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

dd $hash;

现在,inplace edit完成了它的工作,但有一个警告(尽管当我发现它的用处时,我认为它是“无用的”):

代码语言:javascript
复制
Useless use of constant value True in sink context
Hash $hash = ${:gave(1), :received(0), :wallet(99)}

如果我不使用Z+=,这应该是一样的,它可以工作:

代码语言:javascript
复制
my $hash = %(
    wallet   => 100,
    gave     =>   0,
    received =>   0,
    );

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

dd $hash;

同样正确的输出:

代码语言:javascript
复制
Hash $hash = ${:gave(1), :received(0), :wallet(99)}
EN

回答 1

Stack Overflow用户

发布于 2018-02-27 02:23:48

这是个bug。自Rakudo 2018.02.1-45-g8a10fc1修复

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45001820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档