使用LUA CAPI调用LUA匿名闭包

原创 2015年07月11日 10:28:36
    static int Lua_ForEach(lua_State * const L)
    {
        //stack1 = table
        //stack2 = function

        int n1 = lua_gettop(L);

        lua_pushvalue(L, 1);
        lua_pushnil(L);
        while(lua_next(L, -2))
        {
            //压入LUA匿名闭包
            lua_pushvalue(L, 2);
            //压入key
            lua_pushvalue(L, -3);
            //压入value
            lua_pushvalue(L, -3);
            //调用LUA匿名闭包
            lua_pcall(L, 2, 0, 0);

            lua_pop(L, 1);
        }
        lua_pop(L,1);

        int n2 = lua_gettop(L);
        printf("\nn1=%d, n2=%d\n", n1, n2);
        return 0;
    }
local tb =
{
    ["test"] = 1,
    [true] = 2,
    [false] = 3,
    [4] = 4,
    5
};

Lua_ForEach(tb, function(k,v) print(k,v) end);

c语言与lua交互(capi)介绍, lua调用C语言函数详解(二)

基础: lua与C语言使用“栈”交互数据,“栈”是一种先进后出的机制,“压栈”就是将一个元素放到栈顶,lua_push* 函数就是将不同类型压入到栈中。圧栈的第一个元素编号为1,第二个元素...
  • hello188988
  • hello188988
  • 2015年01月25日 21:03
  • 875

lua 函数的闭包

function newCounter() local i = 0 return function() -- anonymous function i = i + 1 ret...
  • huangzeyy
  • huangzeyy
  • 2011年08月22日 13:33
  • 3545

在C++使用LUA交互,LUA实现闭包,C++/LUA相互闭包

LUA可谓是配置文件神器,具体功能用过才知道,接近两年没用了抽了俩小时熟悉了下基本的用法。 包括C/LUA堆栈操作 函数相互调用 以及LUA的闭包 C++和LUA相互闭包 要学习LUA首先要理解LU...
  • yue7603835
  • yue7603835
  • 2014年12月05日 05:13
  • 1874

c++ 与 lua 简单交互1 (LUA CAPI)

一、第一个例子 Hello World ! #include #include #include "lua.h"#include "lauxlib.h"#include "lualib.h"int m...
  • johnice
  • johnice
  • 2010年04月22日 20:43
  • 1870

lua CAPI

1.  建一个新表 void lua_createtable (lua_State *L, int narr, int nrec) 创建一个新的table, 并把它放在栈顶. narr和nrec分...
  • niitlcj
  • niitlcj
  • 2011年03月15日 21:01
  • 1640

深入理解Lua的闭包一:概念、应用和实现原理

本文首先通过的例子讲解了Lua中闭包的概念,然后总结了闭包的应用场合,最后探讨了Lua中闭包的实现原理。 闭包的概念 在Lua中,闭包(closure)是由一个函数和该函数会访问到的非局部变量(或者是...
  • MaximusZhou
  • MaximusZhou
  • 2015年03月15日 20:25
  • 7552

C++ 中调用 Lua 函数

使用上篇的代码 http://blog.csdn.net/huutu/article/details/49594469 在 C++中调用 lua 中的函数并处理返回值 main.cpp ...
  • cp790621656
  • cp790621656
  • 2015年11月03日 01:20
  • 1233

最近比较流行LUA闭包,顺便了解下原理并记录使用方式

一开始看闭包没理解,感觉这个特性像个bug,局部变量在函数退出后没有销毁,还能反复累加不是个bug嘛,理解后感觉闭包也是一个比较方便的开发方式。下面就是lua闭包的简单使用方式,原理就是函数内部的嵌套...
  • zhouxicai
  • zhouxicai
  • 2016年06月03日 17:37
  • 1056

lua闭包全面解析

在lua中,闭包(closure)是由一个函数和该函数会访问到的非局部变量(或者是upvalue)组成的,其中非局部变量(non-local variable)是指不是在局部作用范围内定义的一个变量,...
  • peter_teng
  • peter_teng
  • 2016年10月07日 16:30
  • 1062

Lua_Lua中的闭包小结

前言 在很多语言中都有闭包的概念,而在这里,我将主要对Lua语言的闭包概念进行分析与总结。希望对大家学习Lua有帮助。 什么是闭包? 闭包在Lua中是一个非常重要的概念,闭包是由函数和与其相关的...
  • c201038795050
  • c201038795050
  • 2015年11月07日 17:09
  • 455
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用LUA CAPI调用LUA匿名闭包
举报原因:
原因补充:

(最多只允许输入30个字)