将过滤器重写为Elixir中的管道运算符

Ugu*_*gur 3 elixir

我是Elixir的新手,我正在努力改写这个:

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

这样的事情

kids |> Enum.filter String.contains? "i"
Run Code Online (Sandbox Code Playgroud)

不行. - 我错过了什么?

Paw*_*zak 6

那非常接近,你可以一步一步地去做.

  1. 移动kids"之前" |>:

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

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

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

希望有所帮助!