จะส่งผลลัพธ์ของ Enum.join ไปยัง Regex.scan ใน Elixir ได้อย่างไร

จากเอกสารบนตัวดำเนินการไปป์ ฉันเห็นสัญลักษณ์ " |> ที่ใช้ในตัวอย่างด้านบนคือตัวดำเนินการไปป์: มันเพียงรับเอาต์พุตจากนิพจน์ทางด้านซ้ายและส่งผ่านเป็นอาร์กิวเมนต์แรกไปยังการเรียกใช้ฟังก์ชันทางด้านขวา ด้านข้าง.".

แต่ถ้าฉันมีสตริงที่แบ่งแล้วรวมสตริงนั้นและต้องการป้อนสตริงที่รวมเข้าใน Regex.scan ด้านล่าง ฉันจะทำอย่างไร ฉันได้รับข้อผิดพลาดที่คอมไพล์ unhandled &1 นอกการจับภาพ เมื่อฉันพยายามเรียกใช้ด้านล่าง...และฉันคิดว่านี่เป็นเพราะฉันขาดความเข้าใจเกี่ยวกับวิธีการจับเอาต์พุตตัวดำเนินการไปป์และใช้งาน เป็นข้อโต้แย้ง

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 แหล่งที่มา


คำตอบ (1)


คุณสามารถสร้างฟังก์ชันที่ไม่ระบุตัวตนได้โดยใช้ & และไปป์ลงไป:

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

เอาท์พุท:

"HW"
person Dogbert    schedule 04.06.2016