Пользовательский оператор для подавления контекста приемника - PullRequest
6 голосов
/ 23 марта 2020
multi sub infix:<*>( Numeric $i, Block $b ) { &$b($_) for ^($i.Int); }
3 * { .say };

Доходность

Useless use of "*" in expression "3 * { .say }" in sink context

Как мне избавиться от этого и заставить моего оператора работать? Я знаю, что мог бы присвоить это $ или чему-то еще, но я не хочу этого.

1 Ответ

8 голосов
/ 23 марта 2020

Добавьте эту строку в начало вашего кода:

proto sub infix:<*> ( | --> Nil ) {*}

См. мой ответ на Невозможно поместить карту в контекст приемника , чтобы немного по --> Nil часть этого (вместе с кучей ненужных вещей тоже), включая комментарий Ларри 2012 года:

--> Nil кажется довольно хорошей документацией процедуры, выполненной только для ее побочных эффектов

...