【问题标题】:How to pipe the results of Enum.join into Regex.scan in Elixir?如何将 Enum.join 的结果通过管道传输到 Elixir 中的 Regex.scan?
【发布时间】:2016-06-05 02:36:28
【问题描述】:

从有关管道运算符的文档中,我看到上面 sn-p 中使用的“|> 符号是管道运算符:它只是从其左侧的表达式中获取输出并将其作为第一个参数传递给右侧的函数调用。”。

但是,如果我有一个要拆分的字符串,然后加入它并希望将该加入的字符串提供给下面的 Regex.scan,我该怎么做?当我尝试运行以下命令时,我得到一个编译错误unhandled &1 outside of a capture...我认为这是由于我对如何捕获管道运算符输出并使用它缺乏了解作为论据。

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

【问题讨论】:

    标签: elixir


    【解决方案1】:

    您可以使用& 创建一个匿名函数并将其插入:

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

    输出:

    "HW"
    

    【讨论】:

      猜你喜欢
      • 2014-04-18
      • 1970-01-01
      • 2017-06-04
      • 1970-01-01
      • 1970-01-01
      • 2011-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多