有没有办法将模式匹配中不匹配的变量设置为nil,Elixir
我写了一个我想在两个或更多控制器中使用的插件 对于第一个控制器,在params有没有办法将模式匹配中不匹配的变量设置为nil,Elixir,elixir,phoenix-framework,Elixir,Phoenix Framework,我写了一个我想在两个或更多控制器中使用的插件 对于第一个控制器,在params%%{params:%%{“param1”=>param01,“param2”=>param02}}=conn中有两个变量,而对于第二个控制器,只有一个变量%%{params:%%{“param1”=>param01}=conn 我使用%{params:%{“param1”=>param01,“param2”=>param02}}=conn在插件中进行模式匹配。当请求到达第二个控制器时,它抛出(MatchError)右
%%{params:%%{“param1”=>param01,“param2”=>param02}}=conn
中有两个变量,而对于第二个控制器,只有一个变量%%{params:%%{“param1”=>param01}=conn
我使用%{params:%{“param1”=>param01,“param2”=>param02}}=conn
在插件中进行模式匹配。当请求到达第二个控制器时,它抛出(MatchError)右侧值不匹配:
我想要一个模式匹配,它将优雅地处理这两种情况。是否有办法将第二个控制器的param02
设置为nil
,而不是获取错误
提前感谢您的回答。我刚开始学习Elixir/Phoenix Framework,对它还是新手。模式匹配无法做到这一点。您可以在代码中提取
params
并分配param2
:
def foo(%{params: %{“param1” => param01} = params} = conn) do
param02 = params["param2"]
...
end
param02
现在将设置为conn.params[“param2”],如果存在,否则设置为nil