【发布时间】:2021-06-25 17:19:56
【问题描述】:
更新我的项目以使用 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)
【问题讨论】: