将我的项目更新为使用 Elixir 1.12 后,我注意到 Dialyzer 抱怨我使用点符号访问结构属性的某些地方。例如,这是我的应用程序中的一个 graphql 解析器函数:
def update(_root, %{input: input}, %{context: %{current_user: user}}) do
case user
|> User.update_changeset(input)
|> Repo.update() do
{:ok, updated_user} ->
if user.email !== updated_user.email do
Email.email_changed(user.email, updated_user.email)
|> Mailer.deliver_later()
end
{:ok, updated_user}
err ->
err
end
end
Dialyser 突出显示了user.email !== updated_user.email
带有以下错误的表达式:
The call _.'email'/() requires that _@1 is of type atom(), not {map(), map()}
知道这个错误是什么意思以及如何解决吗?
(这一切都编译并运行良好,我只是想知道为什么它似乎不满足 Dialyzer)