Я просто хочу вызвать определенную функцию в моем скрипте Lua. Как это сделать? - PullRequest
0 голосов
/ 08 марта 2012

Я просто хочу вызвать определенную функцию в моем скрипте Lua.

Простой скрипт:

msg("hello")
function showamsgbox()
msg("123")
end

Я просто хочу, чтобы мое приложение на C вызывало только showamsgbox(), но нечтобы запустить msg("hello"), потому что он покажет msgbox, когда я загружу этот скрипт!Итак, как это сделать, чтобы избежать этой ситуации?

PS: это всего лишь пример. Иногда я хочу позволить пользователям создавать собственные плагины в моей программе. Но я не хочу, чтобы они что-то писали вне функций (я хочу использовать функции, чтобы решить, что делать. Например, функция OnLoad () означает, что она будет запущена при загрузке). Если есть что-то вне функций, я не могу ими управлять!

Ответы [ 3 ]

4 голосов
/ 08 марта 2012

Вы не можете.Скрипт определяет две переменные при запуске: a и geta.Напомним, что function geta()...end совпадает с geta=function()...end.

0 голосов
/ 09 марта 2012

Кажется, что вы хотите песочницу скриптов.Просто дайте им подходящую отдельную среду, прежде чем запускать их.Он может быть пустым или содержать ссылки на функции, которые вы хотите, чтобы они использовали.Они могут писать по своему усмотрению в своей среде, и это не повлияет на вашу.Затем просто получите значение OnLoad или любую пользовательскую функцию, которую хотите вызвать, и вызовите ее.

0 голосов
/ 09 марта 2012

a = 9 будет вызван, когда скрипт будет первоначально оценен в lua_State.

Если вы повторно используете этот экземпляр lua_State, вы можете извлечь функцию и вызвать ее без повторной инициализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...