Повторяется и уникален в хеш-подобных вещах - PullRequest
0 голосов
/ 17 февраля 2019

Метод 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 голосов
/ 17 февраля 2019

.values - это метод для возврата всех значений контейнера.

Поскольку это метод 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 лямбду, он фактически не делает ничего полезного.


Метод, который вы искали, это .value.Который является методом для пары .

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