Направете повикване в Lua, на потенциално неизложена функция в tolua++

Имам Lua скрипт, който използва някои функции на моето C++ приложение. Използвам този скрипт с 2 различни C++ приложения и бих искал да мога да защитя повикване, за да не бъде обвързано чрез tolua.

Например: - Да кажем, че имам две C++ приложения: MyApp1 и MyApp2 - Направих обвивка на MyApp1 с tolua++ и извиквам една от неговите функции по този начин в Lua скрипт:

MyApp1:MyFunc()

Сега използвам същия този скрипт с MyApp2, който няма обвързване tolua++ от този тип. И тогава получавам грешка от този тип:

[низ "MyApp2.lua"]:157: опит за глобално индексиране на "MyApp1" (нулева стойност)

Така че бих искал Lua да не ми изпраща грешка при извикване на този метод. Опитах се да използвам:

pcall( MyApp1:MyFunc() )

Но скриптът продължава да се срива на този ред.


person matt    schedule 15.04.2013    source източник
comment
какво ще кажете за MyApp1 = MyApp2 във второто приложение.   -  person user1095108    schedule 15.04.2013
comment
@user1095108 - в този случай MyApp2 също е нула, тъй като няма никакви tolua++ обвързвания.   -  person W.B.    schedule 15.04.2013
comment
@W.B.: Да, тогава имате нужда от if тестовете.   -  person user1095108    schedule 15.04.2013


Отговори (1)


if MyApp1 then
   MyApp1:MyFunc()
end

Горното ще работи, но не е ли по-чисто да се разделят зависимите от приложението и независимите скриптове? По този начин няма да се налага да се тревожите за това.

person W.B.    schedule 15.04.2013
comment
А, много просто! Благодаря W.B. за твоя отговор :) - person matt; 16.04.2013