表达式与逻辑
2017-12-04 00:00:00


  一、表达式

表达式是由数字、算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合。包含:数值表达式和逻辑表达式。在LUA中又包含函数定义与table构造。

如:

 a=2 b=3

 a*2*(1+2) --这个就是数值表达式

 b>a       --这个就是逻辑表达式

1、算术表达式

算术表达式是最常用的表达式,又称为数值表达式。它是通过算术运算符来进行运算的数学公式。

数学操作符包括:一元操作符(-)

          二元操作符(+,-,*,/,%,^)

/为取模操作,符号与除数一致; %为取余,符号与被除数一致;

如:a%b的结果为-1,c/d的结果为-1.5 。

一般的,我们需要大量调用数学操作符来构建算数表达式,以完成程序的编写。

2、逻辑表达式

在lua中,逻辑表达有两种:比较逻辑表达式或者逻辑表达式。其操作符如下:

比较操作符:<,>,<=,>=,==,~=。即小于,大于,小于等于,大于等于,等于,不等于。Lua会对这类表达式返回一个boolean值。在lua中,你能对一个不同类型的值进行等于比较,这将会返回一个boolean值,但你不能对不同类型的值进行大小比较。

如:

     a=2

     print(a==“2”)

     输出结果为false

     a=2

     print(a<“2”)

     输出会报错,因为a是数值型,不能与字符型比较。

Lua中的逻辑操作符有 and, or,以及not。所有的逻辑操作符把false和nil 都作为假,而其它的一切都当作真。

取反操作not总是返回false或true中的一个。

与操作符 and在第一个参数为false或nil时返回这第一个参数;否则, and返回第二个参数。

或操作符 or在第一个参数不为nil 也不为false时,返回这第一个参数,否则返回第二个参数。

与操作符和或操作符都遵循短路规则; 也就是说,第二个操作数只在需要的时候去求值。

看以下例子:

  二、其他操作符

连接符:.. 字符串连接符

长度操作符:#用于获取长度

即print(“hello”..”world”)输出helloworld

print(#“helloworld”)输出10

  三、操作符优先级

          或操作符

          与操作符

 <  >  <=  >=  ~=  ==

 ..(连接)

 +  -

 *  /  %

 not  #  -(负号)

 ^

通常,你可以用括号来改变运算次序。连接操作符(‘..’) 和幂操作(‘^’) 是从右至左的,因为这两个符号都需要先知道前面的元素是什么才能操作。其它所有的操作都是从左至右。

四、Table构造

简易的构造可以是这样

A={}

也可以初始化一些值

A={1,2,3,4,5,6,7,8}

A={x=1,y=2,z=3}

当然也可以这样

A={

{1,2}

{2,2}

{3,2}

}

用其他编程语言还会用到数组、链表、队列与双端队列、集合和包、StrineBuild,在lua中是不存在的。在以后说到table 的时候会说一下怎么实现上面的结构。