Bagaimana cara menyalurkan hasil Enum.join ke Regex.scan di Elixir?

Dari dokumen tentang operator pipa, saya melihat "Simbol |> yang digunakan dalam cuplikan di atas adalah operator pipa: ia hanya mengambil keluaran dari ekspresi di sisi kirinya dan meneruskannya sebagai argumen pertama ke pemanggilan fungsi di sebelah kanannya samping.".

Tetapi jika saya memiliki string yang saya pisahkan, lalu gabungkan dan ingin memasukkan string yang digabungkan itu ke Regex.scan di bawah, bagaimana caranya? Saya mendapatkan kesalahan terkompilasi tidak tertangani &1 di luar tangkapan ketika saya mencoba menjalankan yang di bawah ini...Dan menurut saya ini karena kurangnya pemahaman saya tentang cara menangkap keluaran operator pipa dan menggunakannya sebagai argumen.

string
|> String.split(" ")  
## some other operations here to operate on split string omitted for clarity
|> Enum.join
|> Regex.scan(~r/[A-Z]/, &1)
|> List.flatten
|> Enum.join

person Nona    schedule 04.06.2016    source sumber


Jawaban (1)


Anda dapat membuat fungsi anonim menggunakan & dan menyalurkannya ke dalamnya:

"Hello World!"
|> String.split(" ")
|> Enum.join
|> (&Regex.scan(~r/[A-Z]/, &1)).()
|> List.flatten
|> Enum.join
|> IO.inspect

Keluaran:

"HW"
person Dogbert    schedule 04.06.2016