Lua学习笔记之表达式

来源:互联网 发布:clojure编程 中文 编辑:程序博客网 时间:2024/04/27 15:46

Lua学习笔记之表达式

1、  算数运算符

二元运算符:+-*/^(加减乘除幂)

一元运算符:-(负值)

这些运算符的操作都是实数。

2、  关系运算符

<、>、<=、>=、==~=

这些操作符返回结果为false或者true;==和~=比较两个值,如果两个值类型不同,lua认为两者不同;nil只和自己相等。Lua通过引用比较tables、userdata、funcations。也就是说当且仅当两者表示同一个对象相等。

Lua比较数字按传统的数字进行比较,比较字符串按字母的顺序进行,但是字母顺序依赖本地环境。

当比较不同类型的值的时候要特别注意;

“0”==0 –false

2<15 –true

“2”<”15” –false为了避免不一致的结果,混合比较数字和字符串,lua会报错,比如:2<“15”

3、  逻辑运算符

and or not

逻辑运算符认为false和nil是假(false),其他为真,0也是真。

   a and b  --如果a为false,则返回a,否则返回b

   a or b   --如果a为true,则返回a,否则返回b

例如:

print(4and 5)             -->5

print(niland 13)          -->nil

print(falseand 13)        -->false

print(4or 5)              -->4

print(falseor 5)          -->5

一个很有用的使用技巧:如果x为false或者nil则给x赋初始值v

x =x or v

等价于

If not x then

X = v

End

And的的优先级比or高

C语言中的三元运算符:

a?b:c

在lua中可以这样实现:

(a and b)or c

Not 的结果一直返回false或者true

ptint(notnil)      -->truue

print(notfalse)   -->true

print(not 0)      -->false

pirint(not notnil)   -->false

4、 连接运算符

..两个点

字符串连接,乳沟操作数为数字,Lua将数字转成字符串。

print(“hello”..”world”)

5、  优先级

从高到低的排序:

^

not –(unary)

* /

   + -

   ..

   < > <= >= ~= ==

   And

   Or

   除了^和..所有的二元运算符都是做连接的。

   a+i<b/2+1    <-->(a+i)<((b/2)+1)

5+x^2*8      <-->5+((x^2)*8)

6、  表的结构

构造器是创建和初始化表的表达式。表示lua特有的功能强大的东西。最简单的构造函数是{},用来创建一耳光空的表。可以直接初始化数组:

Days = {“sunday”,”monday”,”tuesday”,”wednesday”,”thursday”,”friday”,”staturday”}

Lua将Sunday初始化days[1](第一个元素索引为1),用”monday”初始化days[2]

print(days[4])    -->Wednesday

构造函数可以使用任何表达式初始化:

tab = {sin(1),sin(2),sin(3),sin(4),sin(5),sin(6),sin(7),sin(8)}

 

 

0 0