如何推送到数组的哈希键?

时间:2019-02-08 20:54:53

标签: perl6

我正在尝试在Perl6中使用数组的哈希值。

perl5等效项是:

my %c;
@{ $c{'USA'} } = qw(Seattle Madison Bozeman Portland);
push @{ $c{'USA'} }, 'Philadelphia';

但是在Perl6中是这样的:

my %c;
%c<USA> = 'Seattle', 'Madison', 'Bozeman', 'Portland';
%c{'USA'}.append: 'Philadelphia';

给出此错误

  

无法在不可变的“列表”上调用“添加”

我对Perl6的push遇到了类似的错误,考虑到https://docs.perl6.org/routine/push中的示例显示%h<a>.push(1);尝试%c<USA>.push('Philadelphia')也失败了,这似乎还可以

我在这里做错了什么?我没有在搜索引擎结果中看到此错误

1 个答案:

答案 0 :(得分:11)

my %c;
%c<USA> = ['Seattle', 'Madison', 'Bozeman', 'Portland'];
%c{'USA'}.append: 'Philadelphia';

括号括起来是Array而不是List

指向Lists, sequences, and arrays文档的链接解释了这些区别,主要是List是不可变的,而Array不是。