在哈希文档中,
对象键
部分似乎暗示着只要指定,可以使用任何类型作为哈希键,但当我试图使用数组作为键时遇到了麻烦:> my %h{Array};
{}
> %h{[1,2]} = [3,4];
Type check failed in binding to parameter 'key'; expected Array but got Int (1)
in block <unit> at <unknown file> line 1
这个可以做到吗?
%h{[1,2]} = [3,4];
改为%h{item [1,2]} = [3,4];
,它会防止数组被扩展成切片,并将其保留为数组,以便可以将其用作键。 - callyalaterSet([1,2])
或~[1,2]
都完全符合我的需求。.perl
看起来很有趣,但我不确定在正常开发中实际上会经常使用它。 - Hunter McMillen~
,但是你可能知道,我将我的答案从~
前缀演变为.perl
后缀。这是因为,除了简洁性外,它至少与其他两种hack一样好,在许多情况下甚至更好,即常规字符串化(~
)或Liz建议的.Set
。.perl
区分[1,2]
和[2,1]
,而.Set
则不区分,并且区分<<'a a' 'b'>>
和<<'a' 'a b'>>
,而常规字符串化(带有~
)则不区分。总之,就像你说的那样,如果您的数组/列表元素都是整数,则~
将很好地工作。 - raiph