哈希式事物中的重复和独特

问题描述 投票:8回答:1

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)␤»

知道我在这里缺少什么吗?

perl6
1个回答
10
投票

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

因为它是一个List方法,如果你用一个奇异的值来称它,它假装它只是一个包含该值的List

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

as命名为.repeated的参数在所有奇异值上被调用。

%(: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)
© www.soinside.com 2019 - 2024. All rights reserved.