在类似哈希的事物中重复且独特

时间:2019-02-17 17:19:15

标签: perl6

repeated方法将函数用作参数,以在找出重复的元素之前对元素进行规范化。但是,我看不出它可以与values一起使用。例如:

%(:a(3),:b(3),:c(2)).repeated( as=> *.values ).say

返回一个空列表,而我希望对:a(3)和:b(3)与

相同
%(:a(3),:b(3),:c(2)).repeated( as=> .values ).say

例如,在这种情况下,它似乎可以正常工作:

(3+3i, 3+2i, 2+1i).unique(as => *.re).say  # OUTPUT: «(3+3i 2+1i)␤»

有什么想念我的地方吗?

1 个答案:

答案 0 :(得分:10)

.values是一种用于返回容器的所有值的方法。

由于它是一个List方法,因此如果您以一个奇异值调用它,它就会假装它是一个仅包含该值的List

say 5.values.perl;
# (5,)

在所有奇异值上调用.repeatedas命名参数。

%(:a(3),:b(3),:c(2)).repeated( as=> *.perl.say );
# :a(3)
# :b(3)
# :c(2)

因此,通过给其*.values lambda,实际上并没有做任何有用的事情。


您正在寻找的方法是.value。这是Pair上的一种方法。

%(:a(3),:b(3),:c(2)).repeated( as=> *.value ).say
# (a => 3)