gpt4 book ai didi

pattern-matching - Elixir Phoenix 模式匹配 "params"

转载 作者:行者123 更新时间:2023-12-01 22:20:35 24 4
gpt4 key购买 nike

在我的具体情况下,我很难理解模式匹配;我正在尝试从 Phoenix Controller 中的 params 获取值,我认为它是一个结构。

iex 中输入 params 会产生

%{"edit" => "93213e66-a15e-11e6-8bc7-38c986312498",
"job_slug" => "7759-tkhkjd-test"}

但是,运行以下命令:

pry(7)> {edit, job_slug} = params

抛出这个错误:

** (MatchError) no match of right hand side value: %{"edit" => "93213e66-a15e-11e6-8bc7-38c986312498", "job_slug" => "7759-tkhkjd-test"}
(stdlib) :erl_eval.expr/3

如何根据 params 正确地进行模式匹配?

最佳答案

您的 params 是一个 Map,但您要将它与一个 Tuple 进行匹配。你应该试试这个:

%{"edit" => edit, "job_slug" => job_slug} = params

来自Elixir Pattern Matching guide :

The match operator (=) is not only used to match against simple values, but it is also useful for destructuring more complex data types. [...] A pattern match will error in the case the sides can’t match [...] and also when comparing different types.

这意味着您的 LHS 和 RHS 必须属于同一类型,并且必须正确匹配才能分配左侧的变量。在您的情况下,您的右侧有一个 Map,左侧有一个 Tuple,这会引发 MatchError


相关链接:

关于pattern-matching - Elixir Phoenix 模式匹配 "params",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40392944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com