【问题标题】:Is there a way to set variable to nil which are not matched in Pattern Matching, Elixir有没有办法将模式匹配中不匹配的变量设置为 nil,Elixir
【发布时间】:2018-09-23 12:37:46
【问题描述】:

我写了一个插件,我想在两个或多个控制器中使用。

对于第一个控制器,参数 %{params: %{“param1” => param01, “param2” => param02}} = conn 中有两个变量,对于第二个控制器,只有一个变量 %{params: %{“param1” => param01} = conn

我在插件中使用%{params: %{“param1” => param01, “param2” => param02}} = conn 进行模式匹配。当请求到达第二个控制器时,它会抛出 (MatchError) no match of right hand side value:

我想要一个可以优雅地处理这两种情况的模式匹配。有没有办法为 第二个控制器param02 设置为 nil 而不会出错。

提前感谢您的回答。我刚开始学习 Elixir/Phoenix 框架,对它还是很陌生。

【问题讨论】:

    标签: elixir phoenix-framework


    【解决方案1】:

    你不能用模式匹配来做到这一点。您可以改为提取 params 并在您的代码中分配 param2

    def foo(%{params: %{“param1” => param01} = params} = conn) do
      param02 = params["param2"]
      ...
    end
    

    param02 现在将设置为 conn.params["param2"](如果存在),否则设置为 nil

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多