首页 > 解决方案 > 在 Elixir 中将过滤器重写为管道运算符

问题描述

我对 Elixir 很陌生,我正在尝试重写这一点:

kids = ["Mike", "Paula", "Julia", "Phil"]
Enum.filter(kids, fn(n) -> String.contains? n, "i" end)
# results in: ["Mike", "Julia", "Phil"]

变成这样的东西

kids |> Enum.filter String.contains? "i"

不会工作。- 我错过了什么?

标签: elixir

解决方案


很接近了,你可以一步一步来。

  1. 移动kids“之前” |>

    kids |> Enum.filter(fn(n) -> String.contains?(n, "i") end)

  2. 使用捕获运算符缩短过滤功能:

    kids |> Enum.filter(&String.contains?(&1, "i"))

希望有帮助!


推荐阅读