Как вызвать функцию из moonscript в lua?
У меня есть код сценария Луны, как это:
hello = (name) ->
print "Hello #{name}!"
И я хочу использовать его в своем коде Lua, используя moonscript.loadfile
как мне сделать что-то подобное?
1 ответ
Код MoonScript компилируется в Lua, поэтому написанная вами функция на самом деле является функцией Lua, когда она выполняется.
Есть несколько способов получить к нему доступ в Lua:
- Скомпилируйте файл заранее, используя
moonc
инструмент командной строки. Это даст вам.lua
файл, который вы можете загрузить, как и любой другой файл Lua. - Загрузите файл, используя одну из функций загрузчика MoonScript.
moonscript.loadfile
это функция более низкого уровня, и я не рекомендую использовать ее, если это не то, что вам конкретно нужно. Самый простой способ - позвонитьrequire "moonscript"
в вашей программе, то Луаrequire
функция расширена, чтобы иметь возможность загружать файлы MoonScript напрямую. Больше информации на странице справочника по Compiler API.
Имейте в виду, что если у вас есть функция в другом файле, вам необходимо экспортировать их как часть модуля. Вы делаете это, имея возвращаемое значение для модуля. Обычно шаблон возвращает таблицу, которая содержит все функции, которые вы хотели бы использовать. В MoonScript последняя строка в файле автоматически преобразуется в оператор return. Присвоение не принуждается к возврату, поэтому я рекомендую структурировать ваш модуль следующим образом:
hello = (name) ->
print "Hello #{name}!"
{:hello}