Программное управление скриптами
| Смотрите также: Применение программного управления моделью |
Здесь представлены все методы программного управления engee.script. Для ознакомления с методами engee обратитесь к статье Публичные методы программного управления.
Методы script
#
engee.script.edit — Function
engee.script.edit(path::String)
Открывает в редакторе интерактивный скрипт, расположенный по пути path (включая имя и расширение). Если такого файла нет, то по указанному пути создается пустой файл скрипта и открывается в редакторе. Если указанное в path расширение отличается от '.ngscript', то функция вернёт ошибку ErrorException("path should end with '.ngscript' extension").
Примеры
# Открывает скрипт file.ngscript в Редакторе скриптов Engee
engee.script.edit( "file.ngscript" )
#
engee.script.run — Function
engee.script.run(path::String; isolate::Bool = false)
Запускает скрипт по указанному пути. Возвращает результат последнего верхнеуровневого выражения в скрипте.
Аргументы
-
path::String: абсолютный путь до скрипта. -
isolate::Bool = false: если равенtrue, то скрипт выполняется в изолированном окружении. По умолчанию равенfalse. При равномfalseскрипт выполняется в основном пользовательском окружении (модуль Main). Все переменные, объявленные глобально или на верхнем уровне, сохраняются после выполнения. При равномtrueскрипт исполняется во временном изолированном окружении. Все переменные, созданные во время исполнения, не сохраняются после завершения скрипта.
Примеры
Рассмотрим файл foo.ngscript с единственной кодовой ячейкой:
x = 10
y = try
push!(a, :foo) # Пытаемся добавить :foo в существующий массив `a`
5 # Если все хорошо — присваиваем y значение 5
catch _
3 # Если произошла ошибка — присваиваем y значение 3
end
x + y # Возвращаем сумму x и y
Исполнение в пользовательском окружении (isolate = false) изменит переменные x и y, а также добавит :foo в массив а:
a = Symbol[:bar, :baz] # Исходный массив
x = y = 0 # Переменные до запуска скрипта
(engee.script.run("foo.ngscript"), x, y, a)
# ⇒ (15, 10, 5, [:bar, :baz, :foo])
# Скрипт изменил переменные x и y, а также добавил :foo в массив a
При исполнении в изолированном окружении (isolate = true) скрипт не повлияет на внешние переменные и изменения не сохранятся:
# Исходный массив
a = Symbol[:bar, :baz]
# Переменные до запуска скрипта
x = y = 0
(engee.script.run("foo.ngscript"; isolate = true), x, y, a)
# ⇒ (13, 0, 0, [:bar, :baz])
# Скрипт не повлиял на внешние переменные — изменения не сохранились