如何将数组(如下例中的元组)放入Perl中的哈希?
%h=();
@a=(1,1);
$h{@a}=1 or $h{\@a}=1??
Run Code Online (Sandbox Code Playgroud)
我尝试使用数组引用,但它不起作用.我该如何使它工作?我希望通过散列(以及其他方面)进行基本上重复删除.
Pau*_*xon 10
常规哈希只能有字符串键,因此您需要为数组创建某种哈希函数.一种简单的方法是简单地加入你的数组元素,例如
$h{join('-', @a)} = \@a; # A nice readable separator
$h{join($;, @a)} = \@a; # A less likely, configurable separator ("\034")
Run Code Online (Sandbox Code Playgroud)
但是这种方法(使用哨兵值)要求你选择一个在钥匙中找不到的角色.以下不会遇到这个问题:
$h{pack('(j/a*)*', @a)} = \@a;
Run Code Online (Sandbox Code Playgroud)
或者,查看Hash :: MultiKey,它可以使用更复杂的密钥.
| 归档时间: |
|
| 查看次数: |
1100 次 |
| 最近记录: |