如何将Enum.join的结果输入Elixir中的Regex.scan?

时间:2016-06-04 18:16:11

标签: elixir

从管道运算符上的文档中,我看到“上面代码片段中使用的|>符号是管道运算符:它只是从左侧的表达式获取输出并将其作为函数的第一个参数传递在右边打电话。“

但是如果我有一个我拆分的字符串,那么加入它并希望将这个连接的字符串提供给下面的Regex.scan,我该怎么做?当我尝试运行以下内容时,我得到一个编译错误未处理& 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

1 个答案:

答案 0 :(得分:11)

您可以使用&创建一个匿名函数并输入它:

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

输出:

"HW"