小编850*_*850的帖子

将元素添加到循环内声明为“状态%set为SetHash [Str]”的SetHash中时引发的异常

将Str元素添加到声明为state %set is SetHash[Str]在循环内的SetHash中会引发异常:

无法解析调用方STORE(SetHash [Str]:U:SetHash [Str]:D); 这些签名都不匹配:

(SetHash:D:* @ pairs,*%_-> SetHash:D)

(SetHash:D:\ objects,\ bools,*%_-> SetHash:D)

(QuantHash:D:|)

当在循环之前声明为my %set is SetHash[Str]相同的代码就可以了。

根据https://docs.raku.org/type/SetHash#Creating_SetHash_objects

...

从6.d(2019.03及更高版本)开始,还可以指定要在SetHash中允许的值的类型。

这可以在调用.new时完成:

#only allow Pairs

my $n = SetHash[Pair].new: "zero" => 0, "one" => 1, "two" => 2;

或使用伪装语法:

#only allow strings

my %sh is SetHash[Str] = <a b c>;

say %sh<a>; # True

say %sh<d>; # False

...

当声明HashSet前一种方法(%set = SetHash[Str].new)时,它按预期方式工作(在循环之前或循环之内)。仅后者出现问题。

什么有效:

use v6.d;

my @list = 'aaa' …
Run Code Online (Sandbox Code Playgroud)

perl6 sethash raku

6
推荐指数
1
解决办法
67
查看次数

标签 统计

perl6 ×1

raku ×1

sethash ×1