lua 中有快速清空table的函数或者方法没

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lua 中有快速清空table的函数或者方法没相关的知识,希望对你有一定的参考价值。

  可以按tablename=nil或者tablename=清除。
  Lua
是一个小巧的脚本语言。是巴西里约热内卢天主教大学(Pontifical
Catholic
University
of
Rio
de
Janeiro)里的一个研究小组,由Roberto
Ierusalimschy、Waldemar
Celes

Luiz
Henrique
de
Figueiredo所组成并于1993年开发。
其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua
有一个同时进行的JIT项目,提供在特定平台上的即时编译功能。
  Lua脚本可以很容易的被C/C++
代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,ini等文件格式,并且更容易理解和维护。Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。一个完整的Lua解释器不过200k,在目前所有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择。
参考技术A 直接
tablename=nil
或者
tablename=

------------------------------------------------------------------------------------------
清空的意思是把表里的所有东东都清空吧? 直接=就行。

关于内存占用这个问题不用担心,lua的垃圾回收机制会在下次gc时把引用计数为0(就是原先)的table在内存中自动清除。本回答被提问者和网友采纳
参考技术B 扩展Lua的基本方法之一就是为应用程序注册新的C函数到Lua中去。
当提到Lua可以调用C函数,不是指Lua可以调用任何类型的C函数(有一些包可以让Lua调用任意的C函数,但缺乏便捷和健壮性)。
正如前面所看到的,当C调用Lua函数的时候。

C调用lua的table里面的函数

网上搜索C、C++调用lua函数,有一大堆复制粘贴的。

但是搜索《C调用lua的table里面的函数》 怎么就没几个呢?

经过探索,发现其实逻辑是这样的:

1.根据name获取table ;并判断是否为table

2.根据 name2 获取table的成员变量或方法,并判断栈顶的是否为函数

3.将函数的参数压栈,然,没有可以传入一个nil;

4.调用lua_pcall 跟调用普通lua函数的方法就一样了。

 

代码如下:

bool call_table_func(const char * table,const char * func,const char *param)
{
    lua_getglobal(L,table);
    if(lua_istable(L,-1)||lua_type(L,-1)==LUA_TTABLE)
    {
        lua_pushstring(L,func);
        
        lua_gettable(L,-2);
        lua_pushstring(L,param);
        //lua_pushnil(L);
        
        if(lua_pcall(L,1,0,0))
        {
            return false;
        }
        return true;
    }
    return false;

}

 

以上是关于lua 中有快速清空table的函数或者方法没的主要内容,如果未能解决你的问题,请参考以下文章

如何清空dataset中的数据

form resetFields没有清空的原因

Navicat:截断表或者清空表后行数不为0

Navicat:截断表或者清空表后行数不为0

清空日志四种方法

python清空列表的方法