Terkadang saya akan mulai menulis serangkaian panggilan metode di Perl 6 REPL, seperti:
".".IO.dir.grep(...).map(...).
... dan kemudian saya menyadari bahwa apa yang ingin saya lakukan dengan daftar terakhir adalah mencetak setiap elemen pada barisnya sendiri. Saya berharap urutan memiliki sesuatu seperti each
metode sehingga saya bisa mengakhiri rantai dengan .each(*.say)
, tetapi tidak ada metode seperti itu yang bisa saya temukan. Sebaliknya saya harus kembali ke awal baris dan menambahkan .say for
. Rasanya seperti menghancurkan aliran pikiranku.
Ini gangguan kecil, tapi menurut saya kelalaian yang mencolok sehingga saya bertanya-tanya apakah saya kehilangan beberapa alternatif mudah. Satu-satunya yang dapat saya pikirkan adalah ».say
dan .join("\n").say
, tetapi yang pertama dapat beroperasi pada elemen-elemen yang tidak berurutan (jika saya mengerti dengan benar) dan yang terakhir membangun sebuah string tunggal yang bisa menjadi masalah besar, tergantung pada daftar input.
True
nilai dengan panjang yang sama dengan daftar input. Tidak ideal".".IO.dir.grep(*.contains("e")).map(*.uc).map: {.say; Empty}
akan melakukan hal yang sama, tetapi hanya menyebutkan daftar kosong di REPLtell
filehandle sebelum dan sesudah perintah dan membandingkannya, saya pikir? jadi ada yang salah dengan logika itu.Anda bisa menggulung sendiri.
Jika Anda suka ini, ada peluang modul CPAN Pertama Anda di sana.
sumber
.&each()
, jika mereka tidak ingin berkutat dengan menambah..&each()
format datang dengan kelemahan, seperti diminta untuk tetap pada satu baris (atau menggunakan agak sulit di\
semua tempat).