Иногда я начинаю писать цепочку вызовов методов в Perl 6 REPL, например:
".".IO.dir.grep(...).map(...).
... и затем я понимаю, что я хочу сделать с окончательным списком печать каждого элемента в отдельной строке. Я ожидал бы, что у последовательностей будет что-то вроде each
метода, чтобы я мог закончить цепочку .each(*.say)
, но нет такого метода, который я мог бы найти. Вместо этого я должен вернуться к началу строки и подготовить .say for
. Такое ощущение, что это нарушает поток моих мыслей.
Это незначительное раздражение, но это кажется мне таким вопиющим упущением, что я задаюсь вопросом, упускаю ли я какую-то легкую альтернативу. Единственное, о чем я могу думать, это ».say
и .join("\n").say
, но первое может работать с элементами не по порядку (если я правильно понимаю), а второе создает единственную строку, которая может быть проблематично большой, в зависимости от списка ввода.
True
значений той же длины, что и входной список. Не идеально.".".IO.dir.grep(*.contains("e")).map(*.uc).map: {.say; Empty}
будет делать то же самое, но только упомянуть пустой список в REPLtell
дескриптор файла out до и после команды и сравнивая их, я думаю? так что что-то может пойти не так с этой логикой.Вы можете свернуть свой собственный.
Если вам это нравится, у вас есть возможность первого модуля CPAN .
источник
.&each()
вызвать с помощью , если они не хотят возиться с дополнением..&each()
формата сопряжено с недостатками, такими как необходимость придерживаться одной строки (или использовать довольно громоздко\
повсюду).