Step By Sep(Lua表达式和语句).doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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 = 1 3 a.y = 0 4 b = {} 5 b.x = 1 6 b.y = 1 7 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 --Wednesday 10 --Thursday 11 --Friday 12 --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,

文档评论(0)

chengben002424 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档