Импорт функций
Узнайте, как импортировать функции из других плагинов, написанных на разных языках, и использовать их в своем собственном.
В Plugify языковой модуль Lua позволяет вам импортировать и использовать функции из плагинов, написанных на других языках. Это достигается за счет синтетических модулей, генерируемых во время выполнения, которые обеспечивают бесшовное взаимодействие между плагинами.
Это руководство объясняет, как импортировать функции в Lua.
Обзор
При импорте функций из другого плагина в Lua:
- Модули, генерируемые во время выполнения: Plugify динамически генерирует синтетические модули во время выполнения, позволяя вам импортировать и вызывать функции из других плагинов напрямую.
- Прямые вызовы функций: Функции вызываются напрямую с использованием импортированных синтетических модулей.
Импорт функций в Lua
Импорт синтетических модулей
Чтобы импортировать функции из другого плагина, используйте систему require
от Plugify для загрузки синтетического модуля для целевого плагина.
plugify
: Основной модуль Plugify, предоставляющий служебные классы, такие какVector2
,Vector3
и т.д.plugin_from_another_language
: Синтетический модуль для целевого плагина. Замените это на имя плагина, из которого вы хотите импортировать функции.
Вызов импортированных функций
После импорта синтетического модуля вы можете вызывать его функции напрямую.
Пример 1: Вызов простой функции
ParamCallback
: Это пример функции, экспортируемой целевым плагином. Замените его на фактическое имя функции.- Параметры: Передайте необходимые параметры, как определено в сигнатуре функции.
Пример 2: Вызов функции с параметром-обратным вызовом
Если импортируемая функция требует обратный вызов в качестве параметра, вы можете определить обратный вызов в Lua и передать его функции. Вот пример:
CallFuncCallback
: Это пример функции, которая принимает обратный вызов в качестве параметра.mockFunc
: Это функция обратного вызова, определенная в JavaScript. Она изменяет параметры, переданные по ссылке, и возвращает их в массиве.- Возвращаемые значения: Функция обратного вызова возвращает
null
(для типа возвращаемого значения void) и измененные параметры.
Использование файлов типов для разработки
Хотя Lua является динамически типизированным языком и не использует файлы типов, как TypeScript, вы все равно можете воспользоваться такими средствами разработки, как автодополнение, документация и статический анализ, генерируя вспомогательные подсказки по типам или документацию для импортируемых API плагинов.
Генерация файлов типов
Plugify предоставляет скрипт generator.py
для автоматической генерации файлов типов для импортируемых плагинов.
Найдите скрипт генератора:
- Скрипт
generator.py
находится в папкеgenerator
языкового модуля Lua.
Запустите скрипт генератора:
- Откройте терминал или командную строку и перейдите в папку, содержащую
generator.js
. - Запустите скрипт с помощью следующей команды:
путь_к_плагину.pplugin
: Путь к файлу манифеста плагина (.pplugin
), из которого вы хотите импортировать функции.выходная_папка
: Каталог, в котором будет сохранен сгенерированный файл типов.
Пример:
Сгенерированный файл типов:
- Скрипт сгенерирует файл lua (например,
MyPlugin.lua
) в указанной выходной папке. - Пример содержимого файла типов:
Использование файлов типов в вашей IDE:
- Поместите сгенерированный файл типов (
.lua
) в каталог вашего проекта (но не в папку с плагинами). - IDE, такие как VSCode, будут использовать файл типов для предоставления подсказок по типам и автодополнения.
Поддержка VSCode:
- VSCode автоматически обнаруживает файлы типов в вашем проекте. Убедитесь, что папка
types
(или папка, содержащая ваши.lua
файлы) включена в ваш файлluaconfig.json
. - Пример конфигурации
luaconfig.json
:
Примечания
- Файлы типов необязательны: Файлы типов предназначены только для разработки и не должны включаться в папку выполнения вашего плагина.
- Эффективность во время выполнения: Поскольку Lua является динамически типизированным, вызовы функций разрешаются во время выполнения без необходимости предварительно скомпилированных заголовков или определений типов.
Следуя этому руководству, вы можете легко импортировать и использовать функции из других плагинов в вашем плагине на Lua, используя при этом файлы типов для лучшего опыта разработки.