从管道运算符的文档中,我看到"上面代码片段中使用的|>符号是管道运算符:它只是从左侧的表达式获取输出,并将其作为第一个参数传递给右侧的函数调用侧.".
但是如果我有一个我拆分的字符串,那么加入它并希望将这个连接的字符串提供给下面的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
Run Code Online (Sandbox Code Playgroud)
Dog*_*ert 12
您可以使用&和管道创建一个匿名函数:
"Hello World!"
|> String.split(" ")
|> Enum.join
|> (&Regex.scan(~r/[A-Z]/, &1)).()
|> List.flatten
|> Enum.join
|> IO.inspect
Run Code Online (Sandbox Code Playgroud)
输出:
"HW"
Run Code Online (Sandbox Code Playgroud)