# Подключение библиотек
Вы можете создать скрипт-библиотеку, содержащую определения функций и переменных, и подключать ее в другие скрипты. Функции и переменные из подключенной библиотеки можно использовать, как если бы они были определены в самом скрипте.
Ограничения:
- Имена функций и переменных должны быть уникальны в рамках скрипта и всех подключенных библиотек.
- В подключенной библиотеке можно использовать встроенные функции, структуры и переменные из той версии Стандартной библиотеки, которая указана в основном скрипте.
- Имена библиотек не должны содержать пробелов.
Подключаемые библиотеки поддерживаются в Waves IDE и Surfboard.
# Скрипт-библиотека
Код скрипта начинается с директив. Например:
{-# SCRIPT_TYPE ACCOUNT #-}
{-# CONTENT_TYPE LIBRARY #-}
{-# STDLIB_VERSION 8 #-}
Для скриптов-библиотек обязательной является только директива CONTENT_TYPE
. Директивы SCRIPT_TYPE
и STDLIB_VERSION
влияют только на подсветку ошибок в процессе редактирования кода, а при компиляции будут использованы значения этих директив из основного скрипта.
После директив можно объявить функции и переменные. Функции должны быть без аннотаций.
Пример:
{-# CONTENT_TYPE LIBRARY #-}
let someConstant = 42
func doSomething() = {
height + someConstant
}
# Подключение библиотеки
Для подключения библиотек используется директива IMPORT.
В Waves IDE в директиве можно указать имена скриптов-библиотек, сохраненных в ней. Пример:
{-# IMPORT lib1,my_lib2 #-}
Пример скрипта, использующего приведенную выше библиотеку, сохраненную под именем lib1
:
{-# STDLIB_VERSION 8 #-}
{-# CONTENT_TYPE DAPP #-}
{-# SCRIPT_TYPE ACCOUNT #-}
{-# IMPORT lib1 #-}
@Callable(i)
func call() = {
[
IntegerEntry("key", doSomething())
]
}
При использовании Surfboard можно также указать путь относительно текущей папки:
{-# IMPORT lib3.ride,dir/lib4.ride #-}
⚠️ Директива IMPORT должна быть указана последней, иначе скрипт не скомпилируется.
# Компиляция
При компиляции скрипта, в котором есть подключенные библиотеки, в скомпилированный скрипт добавляются функции и переменные библиотек.
В Waves IDE можно уменьшить размер скомпилированного скрипта. Для этого перед компиляцией установите галочки:
- Compaction — использовать в скомпилированном скрипте сокращенные имена функций и переменных (с привязкой к оригинальным именам).
- Remove unused code — оставить в скомпилированном скрипте только те функции и переменные, объявленные глобально, которые фактически используются.