lua指针

问题:Write an iterator fromto such that the next two loops become
equivalent:
for i in fromto(n, m)
   <body>
end

for i = n, m
   <body>
end

Can you implement it as a stateless iterator?

解答:

function iter(m,i)
   i = i + 1
   if(i <= m) then        
       return i,m
   end
end

function fromto(n, m)
   return iter,m,n-1     --返回指针函数,不变量,控制变量

end
n=91
m=100
for i,j in fromto(n,m) do
   print(i, m)
end

lua指针,布布扣,bubuko.com

时间: 2024-10-13 11:30:48

lua指针的相关文章

lua指针学习

按照书上的例子,运行了下,lua指针关键就是3个值,指针函数,不变量,控制变量 function iter(a,i) --指针函数    i=i+1    local v=a[i]    if v then        return i,v    endend function isp(a)    --返回指针函数,不变量,控制变量    return iter,a,0end for k,v in isp({1,2,4}) do --控制变量是k,也就是指针函数返回的第1个赋值的变量    p

ngx lua模块源码简单解析

ngx lua模块源码简单解析分类: nginx 2014-07-11 11:45 2097人阅读 评论(0) 收藏 举报nginxlua数据结构架构目录(?)[+]对nginx lua模块的整个流程,原理简单解析.由于nginx lua模块相关配置,指令,API非常多,所以本文档只以content_by_lua指令举例说明. 读本文档最好配合读源码. 不适合对nginx和lua一点都不了解的人看.1.相关配置详细配置见 https://github.com/openresty/lua-ngin

C\C++和Lua是如何进行通信的?

为了实现Lua和其他语言之间的通信,Lua虚拟机为C\C++提供了两个特性: 一,Lua_State状态机 lua_State主要是管理一个lua虚拟机的执行环境, 一个lua虚拟机可以有多个执行环境.Lua虚拟机通过维护这样一个虚拟栈来实现两种之间的通信,lua_State定义如下: struct lua_State {   CommonHeader;   lu_byte status;   StkId top;  /* first free slot in the stack */   gl

lua 环境探索

什么是环境? http://www.lua.org/manual/5.1/manual.html#2.9 Besides metatables, objects of types thread, function, and userdata have another table associated with them, called their environment. Like metatables, environments are regular tables and multiple

lua require与module

一.模块机制module 1.什么是module 对于用户来说,一个module相当于一个so库.模块的主要目标是实现代码的共享. 2.如何编写module lua是通过table来实现模块的,典型的写法如下. local M = {}        ---- 通常是加local的,如果不加,则M默认注册到_G中,require后,即使不return也可以直接使用M.加了local是局部变量,需要显示的return一下. M.print = function(...) print(...) en

lua local 变量和表

local是我们在lua编程里面经常写的,经常写的方式为local foo = foo.lua对local的处理有加速访问的效果,并且将变量定义为局部变量也是一种好的编程习惯. lua对变量和表的local化处理的方式是不同的 ======example====== foo = {} foo.a =1 do local foo = foo foo.a =2 print(foo, _G["foo"]) print(foo.a) print(_G["foo"].a) e

C++混合编程之idlcpp教程Lua篇(4)

上一篇在这  C++混合编程之idlcpp教程Lua篇(3) 与前面的工程相似,工程LuaTutorial2中,同样加入了三个文件 LuaTutorial2.cpp, Tutorial2.i, tutorial2.lua.其中LuaTutorial2.cpp的内容基本和LuaTutorial1.cpp雷同,不再赘述. 首先看一下Tutorial2.i的内容: namespace tutorial { struct Point { float x; float y; meta: Point();

LUA表克隆方法归纳

lua表克隆 将lua一个表, 克隆出一份为一个独立的另外一个表. 对于一个module, 如果在require之后,获得的表对象, 不能直接修改, 例如lua缓存此表, 但是多次逻辑执行, 都使用的是原始module, 这种情况就需要使用clone. clone实例, 例如将 {1} 克隆出一份 {1}, 使用 tostring 打印两个表,可以看到地址不同. 支持浅.深拷贝方法 深拷贝, 即当遇到表的key或者value也是表的时候, 将表也拷贝一份, 否则不拷贝, 否则的方法为浅拷贝. 对

项目中lua(基础)

关于项目中lua任务(某些没弄懂,但lua上耗费时间有点长了不看了) 这段时间看了lua语法和项目中lua应用 1.在lua中注册c库,在lua5.2中好像都是注册c库,相当于在lua中定义一个table,key是函数名字,value是函数指针 m_spLuaState->RegLib("game", funcs); 2.加载项目中所有lua并执行 刚开始不知道那个dofile具有执行lua的功能,结果是返回0表示成功,执行lua就是执行其中定义的一些函数和全局变量(普通变量,表