Lua学习笔记 第三章 表达式

3.1算术操作符

lua支持常规的算术操作符 —— + - * / ^ % -(负号)

例如 x^0.5是计算x的平方根  x^(-1/3)是计算x立方根的倒数

对于实数xx%1的结果是x的小数部分,x-x%1的结果是x的整数部分,x-x%0.01是精确到x小数点后两位的结果;

 

3.2关系操作符

lua提供的关系操作符 <  >  <=  >=  ==  ~=

所有这些操作符的运算结果都是truefalse

== ~= 可以应用于任意两个值,如果两个值具有不同的类型,它们就是不相等的;

nil只与自身相等

对于table,userdata和函数,lua是作引用比较的;也就是说只有当他们引用同一个对象时

才认为它们相等;

只能对两个数字或两个字符串作大小性比较;而数字和字符串之外的其它类型只能进行相等性或不等性比较;

当两个不同类型的值作比较时要格外小心;lua会在遇到字符串和数字的大小比较时引发一个错误;

 

3.3逻辑操作符

逻辑操作符有 and or not

所有的逻辑操作符都将false nil 视为假,而将其它的任何东西视为真;

and or 都具有短路特性;

lua中常用的习惯写法有:

x = x or v

max = (x > y) and x or y

 

3.4字符串连接

lua中的字符串连接的操作符是".."。如果任意一个操作数是数字的话,lua会将这个数字

转换成一个字符串;

lua中的字符串是不可变的值,连接操作符只会创建一个新的字符串,而不会对其原操作

数进行任何修改;

 

3.5优先级(见表)

一元操作符都是右结合的,在二元操作符中除了指数操作符"^" 和 连接操作符".." 是右结合的,

所有的其它操作符都是左结合的;

 

3.6table构造式

构造式是用于创建和初始化table的表达式,这是lua特有的一种表达式,并且也是lua

最有用,最通用的机制之一;

最简单的构造式就是一个空构造式{},用于创建一个空table,构造式还可以用于初始化数组;

table创建之后可以添加或删除其中的某些字段;

table创建链表的代码:

list  = nil

for line in io.lines() do

list = {next = list,value = line}

end

这段代码是从标准输入中读取每行的内容,然后将每行按相反的次序存储到一个链表中;

链表的每个节点都是一个tabletable中含有两个字段:value(每行的内容) next(

指向下一个节点的引用)。以下代码是遍历该链表并打印:

local l = list

while l do

    print(l.value)

    l = l.next

end

lua中很少会用到链表,列表数据一般通过数组来实现;

lua中的数组索引通常起始于1

在一个构造式中,可以在最后一个元素的后面写一个逗号,这个特性是可选的,也是

合法的;还可以用分号代替逗号,这通常用于分隔构造式不同的成分,如将列表部分

与记录部分区分开;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值