Юлия: откладывайте использование пакетов, пока не потребуется

Я создал модуль (предназначенный для создания пакета), который разбил на несколько файлов, один из которых предназначен для постобработки результатов, например, для построения графиков. Работая над своим модулем, я редактирую некоторые функции и запускаю модуль, чтобы убедиться, что он работает должным образом; когда я делаю это, я обычно модифицирую модуль по одной функции за раз, и мне не нужно все тестировать; в частности, мне не нужно загружать пакеты для печати. Каков наилучший способ отложить загрузку пакетов, пока они на самом деле не нужны?

В R Я мог бы функции загрузить пакет (с помощью команды require("packagename"), так что пакет не будет загружен, пока функция не будет фактически выполнена: если я не вызову эту функцию, пакет не будет загружен. Я не смог разместить using PackageName внутри функции: я понимаю, что это не Julia путь.

Один из подходов, о котором я подумал, - это создать модули внутри моего основного модуля и загрузить эти модули условно, это рекомендуемый подход?

В этой теме есть удивительно похожий вопрос (в основном, дубликат): могу ли я создать пакет Julia, содержащий несколько модулей, которые можно импортировать независимо?, но ответ очень краткий и не сильно мне помог. Ответ там предлагает использовать пакет Requires, Но документация этого пакета не была достаточно подробной для такого начинающего, как я.

Пожалуйста, дайте мне знать, если пакет Requires является рекомендуемым подходом или, если есть альтернативные подходы.

Основываясь на ограниченной документации, я попробовал варианты этого:

module MyMainModule
using BasicPackage
include("main.jl")
export mymainfunction  # so far so good
using Requires  
@require PlotPackage1, PlotPackage2 begin # e.g. Plots, PyPlot, Gadfly, Winston, UnicodePlots
    include("plotstuff.jl") # my plotting functions
export myplotfunction
end  # end of @require macro
end  # end of main module

Но это не правильный путь.

0 ответов

Другие вопросы по тегам