Как вызвать функцию из 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}
Другие вопросы по тегам