【问题标题】:Close Lua State and Reopen关闭 Lua 状态并重新打开
【发布时间】:2015-07-10 20:37:03
【问题描述】:

我在 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_1 加上string_2 中的L

【问题讨论】:

  • 如果您不创建新状态,那么由第一个字符串创建的任何内容仍将存在于状态中(全局变量、全局函数、修改的默认库等)。
  • 经过多次测试,我看到数据被清除,但我不确定我是否真的需要函数中的 L.close(),或者不需要
  • 啊。我错过了那里的L.close() 电话。是的,那个调用(假设你需要通过创建一个全新的状态来遵循它)正在关闭状态并且你正在创建一个新状态。

标签: android lua


【解决方案1】:

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

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

之前对该函数的调用不会以新状态退出。

(我假设这里的函数按照它们看起来的样子工作,并且作为类似名称的 C api 函数。)

【讨论】:

    猜你喜欢
    • 2013-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    • 2011-05-25
    相关资源
    最近更新 更多