A_Quick_Start_Guide_On_Lua_For_C_C_Programmer_CN

A_Quick_Start_Guide_On_Lua_For_C_C_Programmer_CN

ID:37576763

大小:208.41 KB

页数:37页

时间:2019-05-25

A_Quick_Start_Guide_On_Lua_For_C_C_Programmer_CN_第1页
A_Quick_Start_Guide_On_Lua_For_C_C_Programmer_CN_第2页
A_Quick_Start_Guide_On_Lua_For_C_C_Programmer_CN_第3页
A_Quick_Start_Guide_On_Lua_For_C_C_Programmer_CN_第4页
A_Quick_Start_Guide_On_Lua_For_C_C_Programmer_CN_第5页
资源描述:

《A_Quick_Start_Guide_On_Lua_For_C_C_Programmer_CN》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、C/C++程序员的Lua快速入门指南RobertZ2010-1前言本文针对的读者是希望了解Lua或者迅速抓住Lua的关键概念和编程模式的有经验的C/C++程序员。因此本文并不打算教给读者诸如条件语句的语法或者函数定义的方式等等显而易见的东西,以及一些诸如变量、函数等现代编程语言普遍的基本概念。本文只打算告诉读者Lua那些与C/C++相比显著不同的特性以及它们实际上带来了怎样截然不同于C/C++的思维方式。不要小看它们,它们即将颠覆你传统的C/C++的世界观!本文一共分初阶、进阶和高阶三大部分,每个部分又

2、有若干章节。读者应当从头至尾循序渐进的阅读,但是标有“*”号的章节(主要讨论OO在Lua中的实现方式)可以略去而不影响对后面内容的理解(但是作者不建议这么做)。读者只要把前两部分完成就可以胜任Lua开发的绝大部分任务。高阶部分可作为选择。本文不打算取代Lua参考手册或者一本全面的Lua教科书,因此对一些重要的Lua函数也未做足够的说明。在阅读的同时或者之后,读者应当多多参考Lua的正式文档或者其他相关材料(附录里列出了一些常用的Lua参考资料)。请访问本文的在线版本获得最新更新。另外,作者还有一个开源的

3、Lua调试器——RLdb以及一个讨论Lua的站点,欢迎访问。欢迎读者来信反馈意见。初阶话题数据类型函数表简单对象的实现*简单继承*数据类型八种类型:数值(number)内部以double表示的数值类型。字符串(string)由任意字符组成的以零结尾的字符序列;不等价于C字符串,而是其超集。布尔(boolean)只有“true”或者“false”两个值的逻辑类型。函数(function)基本的Lua对象;不简单等同于C的函数或函数指针;Lua的关键概念之一。表(table)异构的Hash表;也是Lua的关

4、键概念。userdataC用户定义的C数据结构;脚本用户只能使用它,不能定义。线程(thread)Lua协作线程(coroutine);与一般操作系统的抢占式线程不一样。nil代表什么也没有,在mouzhong可以与C的NULL作类比,但它不是空指针。函数functionfoo(a,b,c)localsum=a+breturnsum,c--函数可以返回多个值endr1,r2=foo(1,'123','hello')--平行赋值print(r1,r2)输出结果:124hello函数(续)函数定义用关键字f

5、unction定义函数,以关键字end结束函数可以返回多个值returna,b,c,...平行赋值a,b=c,d局部变量用关键字local定义。如果没有用local定义,即使在函数内部定义的变量也是全局变量!全局变量没有用local定义的变量都是全局变量(并不总是这样,稍后读者会看到Lua还有一种叫做“外部局部变量”的变量类型)。前面的代码定义了三个全局变量:foo、r1和r2表a={}输出结果:b={x=1,["hello,"]="world!"}1=>100a.astring="ni,hao!"at

6、able=>table:003D7238a[1]=100astring=>ni,hao!a["atable"]=bfunction:003DBCE0=>function:functionfoo()003DBD00end----------------------------functionbar()hello,=>world!endx=>1a[foo]=bar--分别穷举表a和bfork,vinpairs(a)doprint(k,"=>",v)endprint("--------------------

7、--------")fork,vinpairs(b)doprint(k,"=>",v)end表定义表的方式a={},b={…}访问表的成员通过“.”或者“[]”运算符来访问表的成员。注意:表达式a.b等价于a[“b”],但不等价于a[b]表项的键和值任何类型的变量,除了nil,都可以做为表项的键或值。给一个表项的值赋nil意味着从表中删除这一项,比如令a.b=nil,则把表a中键为“b”的项删除。另外,如果访问一个不存在的表项,其值是nil。比如有c=a.b,但表a中没有键为“b”的项,则c等于nil。

8、一种简单的对象实现方式*functioncreate(name,id)o1=create("Sam",001)localobj={name=name,id=id}functionobj:SetName(name)print("o1'sname:",o1:GetName(),self.name=name"o1'sid:",o1:GetId())endfunctionobj:GetName()o1:SetId(100)returnself.na

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
相关文章
更多
相关标签