Login Elixir--包含多个子句的编译错误定义--
我试图在elixir中登录,但当我输入以下代码时:Login Elixir--包含多个子句的编译错误定义--,login,compilation,elixir,Login,Compilation,Elixir,我试图在elixir中登录,但当我输入以下代码时: def changeset(model, params \\ :empty) do model |> cast(params, ~w(email), []) |> validate_format(:email, ~r/@/) end 我不断地发现这个错误: == Compilation error on file web/models/user.ex == ** (CompileError) web/models
def changeset(model, params \\ :empty) do
model
|> cast(params, ~w(email), [])
|> validate_format(:email, ~r/@/)
end
我不断地发现这个错误:
== Compilation error on file web/models/user.ex ==
** (CompileError) web/models/user.ex:25: definitions with multiple clauses and default values require a header. Instead of:
def foo(:first_clause, b \\ :default) do ... end
def foo(:second_clause, b) do ... end
one should write:
def foo(a, b \\ :default)
def foo(:first_clause, b) do ... end
def foo(:second_clause, b) do ... end
def changeset/2 has multiple clauses and defines defaults in one or more clauses
web/models/user.ex:25: (module)
(stdlib) erl_eval.erl:670: :erl_eval.do_apply/6
(elixir) lib/kernel/parallel_compiler.ex:117: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/1
我知道我必须放一个标题,但我不知道如何修复它,任何人都可以解释一下吗?您的代码可能如下所示:
def changeset(model, params \\ :empty) do
# ...
end
def changeset(model, %{"some" => value}) do
# ...
end
Elixir对此表示不满,因为有多个带有默认值的子句可能会导致歧义。为了防止在语法级别出现这种情况,Elixir强制使用单独的函数头作为默认值
如错误消息所示,您需要添加一个单独的函数头来定义默认值,然后编写其他没有默认值的子句:
# This is a function header, whose only purpose is to set
# default values that apply to all subsequent clauses
def changeset(model, params \\ :empty)
def changeset(model, params) do
# ...
end
def changeset(model, %{"some" => value}) do
# ...
end
您的代码可能如下所示:
def changeset(model, params \\ :empty) do
# ...
end
def changeset(model, %{"some" => value}) do
# ...
end
Elixir对此表示不满,因为有多个带有默认值的子句可能会导致歧义。为了防止在语法级别出现这种情况,Elixir强制使用单独的函数头作为默认值
如错误消息所示,您需要添加一个单独的函数头来定义默认值,然后编写其他没有默认值的子句:
# This is a function header, whose only purpose is to set
# default values that apply to all subsequent clauses
def changeset(model, params \\ :empty)
def changeset(model, params) do
# ...
end
def changeset(model, %{"some" => value}) do
# ...
end
你能把那份文件的其余部分寄出去吗?看起来您正在定义
变更集/2
两次。您可以发布该文件的其余部分吗?看起来您正在定义变更集/2
两次。