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

jjm*_*elo 8 perl6

repeated方法将函数作为参数,用于在找出重复哪些元素之前对元素进行标准化.但是,我无法看到它与之合作values.例如:

%(:a(3),:b(3),:c(2)).repeated( as=> *.values ).say
Run Code Online (Sandbox Code Playgroud)

返回一个空列表,而我期待对:a(3)和:b(3),相同

%(:a(3),:b(3),:c(2)).repeated( as=> .values ).say
Run Code Online (Sandbox Code Playgroud)

例如,在这种情况下,它似乎按预期工作:

(3+3i, 3+2i, 2+1i).unique(as => *.re).say  # OUTPUT: «(3+3i 2+1i)?»
Run Code Online (Sandbox Code Playgroud)

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

Bra*_*ert 10

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

由于它是一个List方法,如果你在一个奇异值上调用它,它假装它只是一个只包含该值的List.

say 5.values.perl;
# (5,)
Run Code Online (Sandbox Code Playgroud)

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

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

因此,通过赋予它*.valueslambda,它实际上没有做任何有用的事情.


你正在寻找的方法是.value.这是一对配对的方法.

%(:a(3),:b(3),:c(2)).repeated( as=> *.value ).say
# (a => 3)
Run Code Online (Sandbox Code Playgroud)