Юлия - UnderVarError - PullRequest
       3

Юлия - UnderVarError

0 голосов
/ 08 сентября 2018

Следующий код выдает «UndefVarError: g notfined»

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

но если заменить f (t) = g (t) на f = g, это работает. Почему?

1 Ответ

0 голосов
/ 09 сентября 2018

Это известная ошибка 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
...