- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Step By Sep(Lua表达式和语句)
一、表达式:?? ?1. 算术操作符:?? ?Lua支持常规算术操作符有:二元的“+”、“-”、“*”、“/”、“^”(指数)、“%”(取模),一元的“-”(负号)。所有这些操作符都可用于实数。然而需要特别说明的是取模操作符(%),Lua中对该操作符的定义为:?? ?a % b == a - floor(a / b) * b?? ?由此可以推演出x % 1的结果为x的小数部分,而x - x % 1的结果则为x的整数部分。类似的,x - x % 0.01则是x精确到小数点后两位的结果。?? ??? ?2. 关系操作符:?? ?Lua支持的关系操作符有:、、=、=、==、~=,所有这些操作符的结果均为true或false。?? ?操作符==用于相等性测试,操作符~=用于不等性测试。这两个操作符可以应用于任意两个值。如果两个值的类型不同,Lua就认为他们不等。nil值与其自身相等。对于table、userdata和函数,Lua是通过引用进行比较的。也就是说,只有当他们引用同一个对象时,才视为相等。如:
1 a = {}2 a.x = 13 a.y = 04 b = {}5 b.x = 16 b.y = 17 c = a
??? 其结果是a == c,但a ~= b。?? ?对于字符串的比较,Lua是按照字符次序比较的。??? ?? ?3. 逻辑操作符:?? ?Lua支持的逻辑操作符有:and、or和not。与条件控制语句一样,所有的逻辑操作符都将false和nil视为假,其他的结果均为真。 和其他大多数语言一样,Lua中的and和or都使用“短路原则”。在Lua中有一种惯用写法x = x or v,它等价于:if not x then x = v end。这里还有一种基于“短路原则”的惯用写法,如:?? ?max = (x y) and x or y?? ?这等价于C语言中max = (x y) ? x : y。由于x和y均为数值,因此它们的结果将始终为true。?? ??? ?4. 字符串连接:?? ?前一篇Blog已经提到了字符串连接操作符(..),这里再给出一些简单的示例。?? ?/ lua?? ? print(Hello .. World)?? ?Hello World?? ? print(0 .. 1)? --即使连接操作符的操作数为数值类型,在执行时Lua仍会将其自动转换为字符串。?? ?01??? 5. table构造器:?? ?构造器用于构建和初始化table的表达式。这是Lua特有的表达式,也是Lua中最有用、最通用的机制之一。其中最简单的构造器是空构造器{},用于创建空table。我们通过构造器还可以初始化数组,如:
1 days = {Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday} 2 for i = 1,#days do 3 print(days[i]) 4 end 5 --输出结果为 6 --Sunday 7 --Monday 8 --Tuesday 9 --Wednesday10 --Thursday11 --Friday12 --Saturday
??? 从输出结果可以看出,days在构造后会将自动初始化,其中days[1]被初始化为Sunday,days[2]为Monday, 以此类推。??? Lua中还提供了另外一种特殊的语法用于初始化记录风格的table。如:a = { x = 10, y = 20 },其等价于:a = {}; a.x = 10; a.y = 20?? ?在实际编程时我们也可以将这两种初始化方式组合在一起使用,如:
polyline = {color = blue, thickness = 2, npoints = 4, {x = 0, y = 0}, {x = 10, y = 0}, {x = -10, y = 1}, {x = 0, y = 1} }print(polyline[color]);print(polyline[2].x)print(polyline[4].y)--输出结果如下:--blue--10--1
??? 除了以上两种构造初始化方式之外,Lua还提供另外一种更为通用的方式,如:
1 opnames = { [+] = add, [-] = sub, [*] = mul, [/] = div}2 print(opnames[+])3 i = 20; s = -4 a = { [i + 0] = s, [i + 1] = s .. s,
您可能关注的文档
- S6LOL虚空遁地雷克赛打野出装顺序,挖掘机攻略.doc
- S907型角位移传器检修规程0418.doc
- Saber电源仿真-基础篇.doc
- Samplitud 说明书.doc
- S120笔记二.doc
- SAP自学系列-采主数据维护业务流程.doc
- RX24.RXG2型散热器安装功率线绕固定电阻器.doc
- SARS防治消毒技指导原则.doc
- SDH常见告警和性故障分析.doc
- sbo物料主数据操说明.doc
- 新教材2023年高考物理总复习-考案6-周测卷五-抛体运动-圆周运动课件.pptx
- 中央空调基础-PPT课件.ppt
- 部编版七年级历史上册第20课-魏晋南北朝的科技与文化-精品课件(共63张PPT).pptx
- 部编人教版七年级道德与法治下册第四单元《走进法治天地》优质课课件(2课共4课时).ppt
- 第3章数控铣削加工工艺(教案9).ppt
- 新人教版八年级物理上册期中考试卷【参考答案】.doc
- 2016-2017学年北京朝阳区人大附朝阳学校初二上学期期中物理试卷.pdf
- 药物传递:第二章.ppt
- 小学生国庆节实践的活动方案.docx
- 人教部编版七年级上册第三单元名著导读《朝花夕拾》课件(38张ppt).pptx
文档评论(0)