Следующий код выдает «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, это работает. Почему?
Это известная ошибка 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