朱莉娅 - UnderVarError

问题描述 投票:2回答:1

以下代码抛出“UndefVarError:g not defined”

function asdf()
if true
    f(t) = t
else 
    g(t) = t
    f(t) = g(t)
end
return f
end
w = asdf()
w(1)

但是通过用f = g代替f(t)= g(t),它可以工作。为什么?

julia
1个回答
2
投票

这是一个已知的bug https://github.com/JuliaLang/julia/issues/15602

简短的建议不是定义一个函数体中两次方法表的函数。而是使用一个变量,在分支中为其分配两个不同的函数(具有不同的名称或匿名)。

在修复此问题之前,您应该做的是:

function asdf()
    if true
        f = t -> t
    else false
        g(t) = t
        f = g(t)
    end
    return f
end
© www.soinside.com 2019 - 2024. All rights reserved.