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).