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)»
知道我在这里缺少什么吗?
.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)