Workflow Tips
Вот несколько советов по эффективной работе с Julia.
REPL-based workflow
Как уже было изложено в The Julia REPL, REPL Julia предоставляет богатый функционал, который облегчает эффективный интерактивный рабочий процесс. Вот несколько советов, которые могут еще больше улучшить ваш опыт работы в командной строке.
A basic editor/REPL workflow
Самые базовые рабочие процессы Julia включают использование текстового редактора в сочетании с командной строкой julia.
Создайте файл, скажем, Tmp.jl, и включите в него
module Tmp
say_hello() = println("Hello!")
# Your other definitions here
end # module
using .TmpЗатем, в той же директории, запустите REPL Julia (используя команду julia). Запустите новый файл следующим образом:
julia> include("Tmp.jl")
julia> Tmp.say_hello()
Hello!Изучите идеи в REPL. Сохраните хорошие идеи в Tmp.jl. Чтобы перезагрузить файл после его изменения, просто снова выполните include.
Ключевым моментом выше является то, что ваш код инкапсулирован в модуле. Это позволяет вам редактировать определения struct и удалять методы, не перезапуская Julia.
(Объяснение: struct не может быть изменен после определения, и методы не могут быть удалены. Но вы можете перезаписать определение модуля, что мы и делаем, когда повторно include("Tmp.jl")).
Кроме того, инкапсуляция кода в модуле защищает его от влияния предыдущего состояния в REPL, защищая вас от труднообнаружимых ошибок.
Browser-based workflow
Существует несколько способов взаимодействия с Julia в браузере:
Revise-based workflows
Независимо от того, находитесь ли вы в REPL или в IJulia, вы можете улучшить свой опыт разработки с помощью Revise. Обычно Revise настраивается на автоматический запуск при старте julia, согласно инструкциям в Revise documentation. После настройки Revise будет отслеживать изменения в файлах любых загруженных модулей и в любых файлах, загруженных в REPL с помощью includet (но не с помощью обычного include); вы можете редактировать файлы, и изменения вступят в силу без перезапуска вашей сессии julia. Стандартный рабочий процесс похож на описанный выше процесс на основе REPL, с следующими модификациями:
Поместите свой код в модуль где-то в вашем пути загрузки. Существует несколько вариантов для достижения этого, из которых два рекомендуемых выбора:
Для долгосрочных проектов используйте PkgTemplates:
using PkgTemplates t = Template() t("MyPkg")Это создаст пустой пакет,
"MyPkg", в вашем каталоге.julia/dev. Обратите внимание, что PkgTemplates позволяет вам управлять многими различными параметрами через его конструкторTemplate.На шаге 2 ниже отредактируйте
MyPkg/src/MyPkg.jl, чтобы изменить исходный код, иMyPkg/test/runtests.jlдля тестов.Для "временных" проектов вы можете избежать необходимости в очистке, выполняя свою работу в временной директории (например,
/tmp).Перейдите в вашу временную директорию и запустите Julia, затем выполните следующее:
pkg> generate MyPkg # type ] to enter pkg mode julia> push!(LOAD_PATH, pwd()) # hit backspace to exit pkg modeЕсли вы перезапустите свою сессию Julia, вам придется повторно выполнить эту команду, изменяющую
LOAD_PATH.На шаге 2 ниже отредактируйте
MyPkg/src/MyPkg.jl, чтобы изменить исходный код, и создайте любой файл теста на ваш выбор.
Разработайте свой пакет
Перед загрузкой любого кода убедитесь, что вы используете Revise: введите
using Reviseили следуйте его документации по автоматической настройке.Затем перейдите в каталог, содержащий ваш тестовый файл (здесь предполагается, что это
"runtests.jl"), и выполните следующее:```julia-repl julia> using MyPkg
julia> include("runtests.jl") ```
Вы можете итеративно изменять код в MyPkg в вашем редакторе и повторно запускать тесты с помощью
include("runtests.jl"). Обычно вам не нужно перезапускать вашу сессию Julia, чтобы изменения вступили в силу (с учетом нескольких limitations).