Как я могу создать библиотеку в Юлии? - PullRequest
0 голосов
/ 03 октября 2018

Мне нужно знать, как создать библиотеку в Джулии и где я должен ее хранить, чтобы вызвать ее позже.Я родом из C и Matlab, кажется, нет документации о практическом программировании в Юлии.Спасибо

1 Ответ

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

Если вы новичок в Юлии, вам будет полезно понять, что у Юлии есть два механизма для загрузки кода .Заявление о том, что вам «необходимо знать, как создать библиотеку в Julia», подразумевает, что вы, скорее всего, захотите создать Julia module docs и, возможно, package docs .Но первый метод, указанный ниже, также может быть полезен для вас.

Два метода загрузки кода в Julia:

1.Включение кода через include("file_path_relative_to_call_or_pwd.jl") документы

Выражение include ("source.jl") вызывает оценку файла source.jl вглобальная область действия модуля, в котором происходит вызов include.

Относительно , где ищется файл "source.jl":

Включенный путь, source.jl, интерпретируется относительнофайл, в котором происходит вызов include.Это упрощает перемещение поддерева исходных файлов.В REPL включенные пути интерпретируются относительно текущего рабочего каталога, pwd ().

Включение файла - это простой способ перенести код из одного файла в другой.Однако переменные, функции и т. Д., Определенные во включенном файле, становятся частью текущего пространства имен.С другой стороны, модуль предоставляет свое отдельное пространство имен.

2.Загрузка пакета через import X или using X документы

Механизм импорта позволяет загружать пакет - то есть независимую, повторно используемую коллекцию кода Julia, упакованнуюв модуле - и делает полученный модуль доступным под именем X внутри импортирующего модуля.

Что касается различия между этими двумя методами загрузки кода:

Кодвключение довольно просто: оно просто анализирует и оценивает исходный файл в контексте вызывающего.Загрузка пакетов построена поверх включения кода и является немного более сложной.

Относительно , где Джулия ищет файлы модулей, см. docs сводка:

Глобальная переменная LOAD_PATH содержитСправочники Юлия ищет модули при вызове require.Его можно расширить с помощью push!:

push!(LOAD_PATH, "/Path/To/My/Module/")

Размещение этого оператора в файле ~ / .julia / config / startup.jl будет расширять LOAD_PATH при каждом запуске Julia.Кроме того, путь загрузки модуля может быть расширен путем определения переменной среды JULIA_LOAD_PATH.

Один из простейших примеров модуля Julia см. Example.jl

module Example
export hello, domath

hello(who::String) = "Hello, $who"
domath(x::Number) = x + 5

end

и для примера пакета см. здесь .

Side Note Существует также запланированная (будущая) возможность библиотеки, аналогичная той, которая у вас может бытьиспользуется с другими языками.См. документы :

Библиотека (будущая работа): скомпилированная двоичная зависимость (не написана в Julia), упакованная для использования в проекте Julia.В настоящее время они обычно создаются на месте сценарием deps / build.jl в дереве исходных текстов проекта, но в будущем мы планируем сделать библиотеки первоклассных сущностей, непосредственно установленные и обновленные менеджером пакетов.

...