Note:Programming in Lua - Chapter 3 : Experience

       区别,表达式中可包含函数定义和table构造式。

 

       算术操作符

       区别,提供^操作符作为指数操作符,x^2表示x的平方。

       lua中的%,如有 a%b,得到的结果的符号总是与b相同。如-3%2得1。

 

       关系操作符

       区别:~= 是 != 。关于==与~=,类型不同直接不同,类型相同再基于类型比较,nil只与nil相同。

       对于userdata,table,function,存储它们的变量是作为引用比较的:

       a= {}; a.x = 1;

       b= {}; b.x = 1;

       c= a;

上述a/b/c,只有a == c,而a ~= b,

       只能对两个number/string作大小比较,string大小比较根据区域设置来进行。其它类型只能进行相等性或不等性比较。

 

       逻辑操作符and or not ,对于and,如果操作数1为假,就返回第1个操作数,不然返回第2个操作数,对于or来说,如果它的第一个操作数为真,就返回第一个操作数,否则返回第2个操作数。and和or都是短路求值。

       not只返回true 或 false

 

       字符串连接符,之前讲过 “..”注意是两个点,且lua不能改变字符串,所以该操作符返回一个新的字符串。

 

       优先级——老话,乘除大于加减,其它加上括号。要知道就算你分得清,其他人可能分不清。

 

       table构造器,常用方法有两种:

       列表初始化方法:a = {"one","two"}   -->相当于a[1] = "one" ;a[2] ="two"

       a= {hello = "world"} -->相当于 a["hello"]= "world"

       每当遇到构造式,lua都会建立一个新的table,然后执行构造式,因此,lua可以很简单地创建链表:

       list= nil

       forline in io.lines() do

              list= {next = list , value = line}    -->创建一个新的链表,执行构造式,再把

       -->新链表赋给list,注意这是按返方向构造链表

       end

       我们可以把两种初始化风格混合在一起使用:

       polyline= {color = "blue",thickness = 2,npoints = 4,

                      {x = 0, y = 0},

                      {x = -10 ,y = 0}}

       另有一种更强大的构造式:

       opnames= { ["+"] = "add" , ["-"] = "sub"}

       这种方法甚至可以把运算符及负数作为索引。

       构造式中可以用分号来代替逗号。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值