c和c++程序员的lua快速入门

c和c++程序员的lua快速入门

ID:14859008

大小:204.17 KB

页数:37页

时间:2018-07-30

c和c++程序员的lua快速入门_第1页
c和c++程序员的lua快速入门_第2页
c和c++程序员的lua快速入门_第3页
c和c++程序员的lua快速入门_第4页
c和c++程序员的lua快速入门_第5页
资源描述:

《c和c++程序员的lua快速入门》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

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

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

3、。初阶话题数据类型函数表简单对象的实现*简单继承*数据类型八种基本类型:数值(number)内部以double表示字符串(string)总是以零结尾,但可以包含任意字符(包括零),因此并不等价于C字符串,而是其超集。布尔(boolean)只有“true”或者“false”两个值。函数(function)Lua的关键概念之一。不简单等同于C的函数或函数指针。表(table)异构的Hash表。Lua的关键概念之一。userdata用户(非脚本用户)定义的C数据结构。脚本用户只能使用它,不能定义。线程(threa

4、d)Lua协作线程(coroutine),与一般操作系统的抢占式线程不一样。nil代表什么也没有,可以与C的NULL作类比,但它不是空指针。函数functionfoo(a,b,c)localsum=a+breturnsum,c--函数可以返回多个值endr1,r2=foo(1,'123','hello')--平行赋值print(r1,r2)输出结果:124hello函数(续)函数定义用关键字function定义函数,以关键字end结束局部变量用关键字local定义。如果没有用local定义,即使在函数内部定

5、义的变量也是全局变量!函数可以返回多个值returna,b,c,...平行赋值a,b=c,d全局变量前面的代码定义了三个全局变量:foo、r1和r2表a={}输出结果:b={x=1,["hello,"]="world!"}1=>100a.astring="ni,hao!"atable=>table:003D7238a[1]=100astring=>ni,hao!a["atable"]=bfunction:003DBCE0=>function:functionfoo()003DBD00end---------

6、-------------------functionbar()hello,=>world!endx=>1a[foo]=bar--分别穷举表a和bfork,vinpairs(a)doprint(k,"=>",v)endprint("----------------------------")fork,vinpairs(b)doprint(k,"=>",v)end表定义表(Table)的方式a={},b={…}访问表的成员通过“.”或者“[]”运算符来访问表的成员。注意:表达式a.b等价于a[“b”],但不等

7、价于a[b]表项的键和值任何类型的变量,除了nil,都可以做为表项的键。从简单的数值、字符串到复杂的函数、表等等都可以;同样,任何类型的变量,除了nil,都可以作为表项的值。给一个表项的值赋nil意味着从表中删除这一项,比如令a.b=nil,则把表a中键为“b”的项删除。如果访问一个不存在的表项,其值也是nil,比如有c=a.b,但表a中没有键为“b”的项,则c等于nil。一种简单的对象实现方式*functioncreate(name,id)o1=create("Sam",001)localobj={nam

8、e=name,id=id}functionobj:SetName(name)print("o1'sname:",o1:GetName(),self.name=name"o1'sid:",o1:GetId())endfunctionobj:GetName()o1:SetId(100)returnself.nameo1:SetName("Lucy")endfunctionobj:SetId(id)print("o1'

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

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

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