gpt4 book ai didi

elixir - with..do..else 语句中出现奇怪的语法错误

转载 作者:行者123 更新时间:2023-12-05 00:52:30 24 4
gpt4 key购买 nike

我有一个语法错误,我不知道它来自哪里。这是我的函数(在 persona_from_auth.ex 中):

  # find or create the user.
# if you login with oauth2, your account will auto created
def find_or_create(%Auth{provider: :github} = auth) do
with
{:notfound} <- check_github_email(auth.info.email),
{:notfound} <- check_google_email(auth.info.email)
do
create(auth)
else
{:ok, persona} -> update(auth, persona)
end
end

这将返回以下错误:
== Compilation error on file web/models/persona_from_auth.ex ==
** (SyntaxError) web/models/persona_from_auth.ex:18: syntax error before: do
(elixir) lib/kernel/parallel_compiler.ex:117: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/1

第 18 行是 create() 调用之前的行。

我检查了正确的 Elixir 版本。结果在 mix.exs 中我有 1.2,我将其更改为 1.4.2 但仍然是相同的错误。编译是否有可能仍然使用1.2?我如何检查?

最佳答案

with 之后的第一条语句必须在同一行或参数需要在括号中,否则 Elixir 认为您正在尝试调用 with/0然后以下几行没有意义,导致语法错误。

以下任何一项都应该有效:

with {:notfound} <- check_github_email(auth.info.email),
{:notfound} <- check_google_email(auth.info.email))
do
with(
{:notfound} <- check_github_email(auth.info.email),
{:notfound} <- check_google_email(auth.info.email)
) do

关于elixir - with..do..else 语句中出现奇怪的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42611116/

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