关闭 Lua 状态并重新打开

Close Lua State and Reopen

我在 android 中使用 Lua 但不是很清楚我是否可以这样做:

LuaState L = null;

function loaddata(String data)
{
 if ( L !=null && L.isClosed() == false) 
    L.close();

 L = LuaStateFactory.newLuaState();
 L.openLibs();
 L.LdoString(data);
}

loaddata(string_1)  ;
//and later 
loaddata(string_2);

我想清除 L 并将其用于另一个数据,string_2。 我的函数 L.LdoString(data); 会有对应于 string_2 的新数据吗? 还是 string_1string_2L?

在您的代码中,当您调用 L.close() 时,您将关闭现有的 lua 状态。

然后您使用 LuaStateFactory.newLuaState() 创建一个新的(干净的)lua 状态。

之前调用该函数的任何内容都不会以新状态退出。

(我假设这里的函数像它们看起来的那样工作,并且与具有相似名称的 C api 函数一样工作。)