有没有办法将模式匹配中不匹配的变量设置为nil,Elixir

有没有办法将模式匹配中不匹配的变量设置为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
%%{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