Czasami zaczynam pisać łańcuch wywołań metod w Perl 6 REPL, na przykład:
".".IO.dir.grep(...).map(...).
... a potem zdaję sobie sprawę, że to, co chcę zrobić z ostateczną listą, to wydrukować każdy element na osobnej linii. Spodziewałbym się, że sekwencje będą miały coś w rodzaju each
metody, dzięki czemu mógłbym zakończyć łańcuch .each(*.say)
, ale nie ma takiej metody, którą mógłbym znaleźć. Zamiast tego muszę wrócić do początku wiersza i dodać .say for
. Wydaje się, że przerywa przepływ moich myśli.
To niewielka irytacja, ale uderza mnie to tak rażące pominięcie, że zastanawiam się, czy brakuje mi łatwej alternatywy. Jedyne, o których mogę myśleć, to ».say
i .join("\n").say
, ale te pierwsze mogą działać na elementach nie w porządku (jeśli dobrze rozumiem), a drugie konstruuje pojedynczy ciąg znaków, który może być problematycznie duży, w zależności od listy danych wejściowych.
True
wartości o tej samej długości co lista wejściowa. Nieidealny.".".IO.dir.grep(*.contains("e")).map(*.uc).map: {.say; Empty}
zrobi to samo, ale wspomina tylko o pustej liście w REPLtell
naszego uchwytu pliku przed i po poleceniu i porównuje je, tak myślę? więc coś może pójść nie tak z tą logiką.Możesz rzucić własny.
Jeśli ci się podoba, masz szansę na skorzystanie z pierwszego modułu CPAN .
źródło
.&each()
, na wypadek, gdyby nie chcieli zmagać się z rozszerzaniem..&each()
formatu wiąże się z wadami, takimi jak konieczność trzymania się jednej linii (lub używanie raczej nieporęcznego w\
każdym miejscu).