Elixir 长生不老药管道,如果是新变量,can管道,can';t管道如果直接发送到管道,为什么?
我有一个嵌套模型,想做一些基本的管道。我的最终目标是为以下参数删除Elixir 长生不老药管道,如果是新变量,can管道,can';t管道如果直接发送到管道,为什么?,elixir,phoenix-framework,Elixir,Phoenix Framework,我有一个嵌套模型,想做一些基本的管道。我的最终目标是为以下参数删除id==“”中的任何嵌套映射: params=%%{“name”=>“outerrmodelname”,“InnerModel”=>%%{“0”=>%%{“id”=>“2”},“1”=>%%{“id”=>“3”},“2”=>%%{“id”=>“}}} 要删除id==“”以下管道工程: blanksRemoved = params |> Map.update! "InnerModel", f
id==“”
中的任何嵌套映射:
params=%%{“name”=>“outerrmodelname”,“InnerModel”=>%%{“0”=>%%{“id”=>“2”},“1”=>%%{“id”=>“3”},“2”=>%%{“id”=>“}}}
要删除id==“”
以下管道工程:
blanksRemoved =
params
|> Map.update! "InnerModel", fn(innerMap) ->
Enum.filter(innerMap,fn{k,v} -> byte_size(v["id"]) !=0 end) end
删除的空格现在是:
%{“name”=>“outermormodelname”、“InnerModel”=>[{“0”、“id”=>“2”}、{“1”、“id”=>“3”}]}
请注意,innerModel变成了一个数组,因此我需要将该数组转换回结构
asStruct =
blanksRemoved |> Map.update! "InnerModel", fn(innerMap) ->
Enum.into(innerMap,%{}) end
这正是我的初衷,我得到:
%%{“name”=>“outerrmodelname”,“InnerModel”=>%%{“0”=>%%{“id”=>“2”},“1”=>%%{“id”=>“3”}}
然而,当我尝试简单地将两个管道与下面的管道组合时,我得到了一个错误
combinedPipes =
params
|> Map.update! "InnerModel", fn(innerMap) ->
Enum.filter(innerMap,fn{k,v} -> byte_size(v["id"]) !=0 end) end
|> Map.update! "InnerModel", fn(innerMap) ->
Enum.into(innerMap,%{}) end
错误是:
argument error
(stdlib) :maps.find("InnerModel", #Function<2.64012156
参数错误
(stdlib):maps.find(“InnerModel”),#FunctionEDIT在Elixir的主分支上,如果有参数,则编译器将在不带括号的情况下发出警告
由于函数调用的优先级高于管道操作符,因此在函数调用周围需要显式括号
combinedPipes =
params
|> Map.update!("InnerModel", fn(innerMap) ->
Enum.filter(innerMap,fn{k,v} -> byte_size(v["id"]) !=0 end) end)
|> Map.update!("InnerModel", fn(innerMap) ->
Enum.into(innerMap,%{}) end)
您可以在Elixir的主分支上的编辑中阅读更详细的解释,如果有参数,编译器将在不带括号的情况下发出警告
由于函数调用的优先级高于管道操作符,因此在函数调用周围需要显式括号
combinedPipes =
params
|> Map.update!("InnerModel", fn(innerMap) ->
Enum.filter(innerMap,fn{k,v} -> byte_size(v["id"]) !=0 end) end)
|> Map.update!("InnerModel", fn(innerMap) ->
Enum.into(innerMap,%{}) end)
你可以在Man这是另一个长生不老药常见问题解答)Man这是另一个长生不老药常见问题解答。:)请记住,[{“0”、%%{“id”=>“2”}、{“1”、%%{“id”=>“3”}]
表示列表,而不是数组;区别不是微不足道的。请记住,[{“0”、%%{“id”=>“2”}、{“1”、%%{“id”=>“3”}]
表示列表,而不是数组;两者的区别并非微不足道。