Функция импорта из родственного модуля - PullRequest
0 голосов
/ 03 июля 2018

У меня есть пакет с именем MAIN. Внутри папки src у меня есть файлы:

src/
    MAIN.jl
    utils.jl
    models.jl

Внутри MAIN.jl у меня есть следующее:

module MAIN

include("models.jl")
include("utils.jl")

end

Содержимое utils.jl:

module utils
export foo
function foo()
    return 1
end
end

Тогда я хочу использовать функцию foo внутри функции в файле models.jl. Теперь у меня есть следующее:

module models
using ..utils

export bar
function bar()
   return foo()
end


end # module

Но когда я запускаю import MAIN, я получаю следующую ошибку: LoadError: LoadError: UndefVarError: utils not defined.

Итак, как в этом режиме я могу импортировать функцию foo в файл models.jl?

1 Ответ

0 голосов
/ 04 июля 2018

Причиной вашей проблемы является неправильный порядок import звонков. Операторы import оцениваются последовательно, что означает, что модуль utils не определен при оценке файла models.jl. Чтобы исправить это, используйте следующую последовательность импорта:

module MAIN

include("utils.jl")
include("models.jl")

end
...