Lua中的table功能确实强大.因为table是Lua中的唯一数据结构.今天有点晕,少说两句多拷贝代码吧. 实例: 假定你想列出在一段源代码中出现的所有标示符,某种程度上,你需要过滤掉那些语言本身的保留字.一些C程序员喜欢用一个字符串数组来表示,将所有的保留字放在数组中,对每一个标示符到这个数组中查找看是否为保留字,有时候为了提高查询效率,对数组存储的时候使用二分查找或者hash算法. Lua中表示这个集合有一个简单有效的方法,将所有集合中的元素作为下标存放在一个table里,下面不需要查找t…
现在有这样一个需求,有一个字符串,需要查找字符i最后出现的位置,不过相对于其他语言来说,Lua并没有提供这一操作,那么如何是好? 现在有这样几个方法: string.sub(str, i ,j) 功能:截取str以i开始j结束的部分 string.reverse(str) 功能:将str倒序输出 string.len(str) 功能:返回str的长度 string.find(str, pattern, init, plain) 功能:查找到指定字符在str的起始位置.其中str为源字符串,pat…
> aaa='/p/v2/api/winapi/adapter/lgj'> print(string.find(aaa, "^/.+/adapter/(.*)"))1 28 lgj > aaa='/p/v2/api/winapi/adapter/lgj/zy/l'> print(string.find(aaa, "^/.+/adapter/(.*)"))1 33 lgj/zy/l > print(string.gsub('lgj/zy/…
近日开始研究Lua,在元表的使用上照猫画虎地搞了两下,实现了“面向对象”,但究其本质却略有不解,后咨询牛哥得解,特此记录. Lua的表本质其实是个类似HashMap的东西,其元素是很多的Key-Value对,如果尝试访问了一个表中并不存在的元素时,就会触发Lua的一套查找机制,也是凭借这个机制,才能够实现“面向对象”的. 举例说明: tempTable = {} print(tempTable.memberA) --这里试图打印tempTable并不存在的成员memberA 执行结果:nil输出…
引言 在上篇博客中,我们简单地学习了一下Lua的基本语法.其实在Lua中有一个还有一个叫元表的概念,不得不着重地探讨一下.元表在实际地开发中,也是会被极大程度地所使用到.本篇博客,就让我们从Lua查找表元素的过程,来探讨学习一下Lua中的元表. 一.什么是元表 在Lua table中我们可以访问对应的key来得到value值,但是却无法对两个table进行操作.因此Lua 提供了元表(Metatable),允许我们改变table的行为,每个行为关联了对应的元方法.通俗来说,元表就像是一个“操作指…
Programming in LuaCopyright ® 2005, Translation Team, www.luachina.net Programming in LuaProgramming in Lua作者:Roberto Ierusalimschy翻译:www.luachina.netSimple is beautifulCopyright ® 2005, Translation Team, www.luachina.net Programming in Luai版权声明 <Pro…
转载自:http://magicpanda.net/2010/10/lua%E6%9E%B6%E6%9E%84%E6%96%87%E6%A1%A3/ Lua架构文档(翻译) 十 102010 前段时间翻译了lua官方关于lua5架构设计的一份文档,现在分享给大家. 注意:所有版权都归lua官方所有,本人仅将其翻译为中文,以方便中文阅读者.翻译中出现任何错误导致的结果,本人不负任何责任. 如果有任何翻译错误,以及意见与建议,请email本人.邮件地址:ice_ok@163.com. 转载请注明原作…
转自:http://www.runoob.com/manual/lua53doc/manual.html 1 – 简介 Lua 是一门扩展式程序设计语言,被设计成支持通用过程式编程,并有相关数据描述设施. 同时对面向对象编程.函数式编程和数据驱动式编程也提供了良好的支持. 它作为一个强大.轻量的嵌入式脚本语言,可供任何需要的程序使用. Lua 由 clean C(标准 C 和 C++ 间共通的子集) 实现成一个库. 作为一门扩展式语言,Lua 没有 "main" 程序的概念: 它只能 …
转自:http://cn.cocos2d-x.org/tutorial/show?id=1474 一.Lua堆栈 要理解Lua和C++交互,首先要理解Lua堆栈. 简单来说,Lua和C/C++语言通信的主要方法是一个无处不在的虚拟栈.栈的特点是先进后出. 在Lua中,Lua堆栈就是一个struct,堆栈索引的方式可是是正数也可以是负数,区别是:正数索引1永远表示栈底,负数索引-1永远表示栈顶.如图: lua的栈类似于以下的定义, 它是在创建lua_State的时候创建的: TValue stac…
ulua 路径小记 在学习ulua时,require模块的根路径可以为项目的Lua文件夹或者ToLua文件夹(Editor下),但是在package.path和package.cpath中并没有看到当前项目的路径,那require是如何找到Lua和ToLua文件夹的路径的呢? ulua在初始化LuaState时,会先解析package.path, 并将其存入LuaFileUtils的SearchPaths中(LuaState.cs line:603),并将Lua和ToLua的目录添加其中(Lua…