【发布时间】:2021-12-10 04:10:54
【问题描述】:
我在访问二维哈希值时遇到问题。据我在网上说,应该是这样的:%myHash{"key1"}{"key2"} #Returns value
但是,我收到错误消息:“类型数组不支持关联索引。”
这是Minimal Reproducible Example。
my %hash = key1-dim1 => key1-dim2 => 42, key2-dim1 => [42, 42];
say %hash{'key1-dim1'}{'key1-dim2'}; # 42
say %hash{'key2-dim1'}{'foo bar'}; # Type Array does not support associative indexing.
这是另一个可重复的示例,但更长:
my @tracks = 'Foo Bar', 'Foo Baz';
my %count;
for @tracks -> $title {
$_ = $title;
my @words = split(/\s/, $_);
if (@words.elems > 1) {
my $i = 0;
while (@words.elems - $i > 1) {
my %wordHash = ();
%wordHash.push: (@words[$i + 1] => 1);
%counts.push: (@words[$i] => %wordHash);
say %counts{@words[$i]}{@words[$i+1]}; #===============CRASHES HERE================
say %counts.kv;
$i = $i + 1;
}
}
}
在我上面的代码中,访问二维哈希值的问题行将在 for 循环的第一次迭代中工作一次。但是,它总是在第二次通过该错误时崩溃。我尝试用静态键值替换花括号中的数组引用,以防它们出现奇怪的情况,但这并不影响结果。通过在线搜索,我似乎无法找到到底出了什么问题。
我对 raku 很陌生,所以如果这应该是显而易见的事情,我深表歉意。
【问题讨论】:
-
嗨@GarrettS。我希望您不介意,但我已经编辑了您的答案以使您的示例实际生成您所说的错误,并且我还提供了minimal reproducible example。