Tob*_*ede 7 functional-programming elixir
我试图从Elixir中的地图中过滤掉一些值.
这个:
params = %{"blah" => "blah", "vtha" => "blah"}
params
|> Enum.filter fn {k, v} -> k == v end
|> Enum.map(fn {k, v} -> {k, v} end)
Run Code Online (Sandbox Code Playgroud)
导致此错误:**(FunctionClauseError)在Enumerable.Function.reduce/3中没有匹配的函数子句
但是过滤器和映射操作都是孤立的.
Enum.filter params, fn {k, v} -> k == v end
Enum.map(params, fn {k, v} -> {k, v} end)
Run Code Online (Sandbox Code Playgroud)
它们在管道输送时不起作用.
我相信我错过了一些明显的东西.
Gaz*_*ler 11
编辑在Elixir的主分支上,如果存在参数,编译器将警告函数是否在没有括号的情况下被管道输入.
您需要显式括号,Enum.filter因为函数调用具有比管道运算符更强的优先级.
params = %{"blah" => "blah", "vtha" => "blah"}
params
|> Enum.filter(fn {k, v} -> k == v end)
|> Enum.map(fn {k, v} -> {k, v} end)
Run Code Online (Sandbox Code Playgroud)
请参阅为什么我不能链String.replace?有关更详细的解释.
| 归档时间: |
|
| 查看次数: |
3289 次 |
| 最近记录: |