以下代码抛出“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),它可以工作。为什么?
这是一个已知的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