Elixir:为什么我会收到 "undefined function" 错误?
Elixir: Why do I get "undefined function" error?
Elixir 编译器在函数的第三行给了我 "undefined function changes/0":
def ignore_empty(changeset) do
cond do
%{valid?: false, changes: changes} = changeset when changes == %{} ->
%{changeset | action: :ignore}
true -> changeset
end
end
这是为什么?我主要从 cast_assoc 函数 here
的 Ecto.Changeset 文档中复制了这段代码
您可能打算使用 case
,例如
def ignore_empty(changeset) do
case changeset do
%{valid?: false, changes: changes} = changeset when changes == %{} ->
%{changeset | action: :ignore}
_ ->
changeset
end
end
你得到 "undefined function" 的原因是因为当表达式被扩展时,这恰好是编译器遇到的第一个错误。将表达式放在 cond
中是有效的,因此除了引用未定义的函数 changes
之外,它会失败的另一件事是使用 when
。无论如何,这似乎是这里的问题。
Elixir 编译器在函数的第三行给了我 "undefined function changes/0":
def ignore_empty(changeset) do
cond do
%{valid?: false, changes: changes} = changeset when changes == %{} ->
%{changeset | action: :ignore}
true -> changeset
end
end
这是为什么?我主要从 cast_assoc 函数 here
的 Ecto.Changeset 文档中复制了这段代码您可能打算使用 case
,例如
def ignore_empty(changeset) do
case changeset do
%{valid?: false, changes: changes} = changeset when changes == %{} ->
%{changeset | action: :ignore}
_ ->
changeset
end
end
你得到 "undefined function" 的原因是因为当表达式被扩展时,这恰好是编译器遇到的第一个错误。将表达式放在 cond
中是有效的,因此除了引用未定义的函数 changes
之外,它会失败的另一件事是使用 when
。无论如何,这似乎是这里的问题。