Lua语言学习之表达式和语句

来源:互联网 发布:腾讯视频有mac版本吗 编辑:程序博客网 时间:2024/05/09 17:37


上次已经学习了Lua的基本语法,今天开始学习表达式。

     表达式用于表示值。Lua的表达式中可以包含数字常量、字面字符串、变量、一元和二元操作符及函数调用。另外,有别于传统的是,表达式中还可以包括函数定义(匿名函数或闭包)和table构造式。

      一、首先,熟悉一下各种操作符:

1.算术操作符:+、-、*、/、%、- (负号)和 ^ (指数), Lua比其他语言多了一个指数运算符,其他都一样。

2.关系操作符:<   >  <=  >=  ==  ~=   , 和其他语言( != )不同的是不“不等于”。运算结果都是true或false。

3.逻辑操作符:and   or   not 。and和or都使用“短路求值(short-cut evaluation),也就是说,它们只会在需要时才去评估第二个操作符,而且它们的结果与其他语言截然不同:

and --> 如果它的第一个操作数为假,就返回第一个操作数,否则就返回第二个操作数;

or -----> 如果它的第一个操作数为真,就返回第一个操作数,否则就返回第二个操作数;

not相当于C中的非(!),结果是true或false。

注意:Lua中的假只有2种-----> false 和 nil , 其他值都是真。其他语言一般有四大假:0,false,nul,‘\0’。特别注意Lua中的0是真,这点区别很大。

想一想:C语言中的三目运算符 ?: 怎么表达 ?

还有一个字符串连接符 .. 前面已经接触到了。

二、语句

和其他语言类似,无非是一些赋值语句,条件语句,循环语句等,这都很简单,只是格式上有一些区别而已。

1. 赋值语句

赋值(assignment)的基本含义是修改一个变量或者一个table中字段的值,但是Lua中的赋值有一些额外的不同:可以多重赋值,也就是一次将多个值赋给多个变量,各变量或值用逗号分隔。

a, b = 10, "hello"

a, b, c = 0, 1, 2

a, b, c = 0, 1    -----> c没有赋值,c = nil

a, b = 0, 1, 2 -------> 2 没有变量接收,被忽略

a, b = b, a   ------> 想想这是什么意思 ?

2. if 条件选择语句

  注意格式:

if a < 0 then         a = 0end

嵌套的if语句:

if a and b thenprint(a)
elseif  c and d thenprint(c)elseif e or f thenprint(e)
elseprint("nothing")end

3.while 循环:先判断条件,再执行循环体

local i = 1
while a[ i ]  doprint ( a[ i ] )i = i + 1   ----> Lua 中没有++、-- 运算符end

4.repeat-until 语句,一直执行循环体,直到条件满足时结束

repeat
line = io.read()until line ~= " "
 print ( line )

5.for 循环语句,有两种:数字型for(numeric for)和泛型for(generic for)

数字型for:

for var = start,end,step do

<循环体>

end

      泛型for:通过一个迭代器(iterator)函数来遍历所有值:

for i, v in ipairs( a ) do 

print( v ) 

end

ipairs是Lua基础库中提供的用于遍历数组的迭代器函数,还有一个迭代table元素的函数pairs。其实,数组也是用table表示的:

a = {1,2,3,4,5,6,7}这就是数组,用ipairs ( a ) 可以遍历所有元素

b = { “one” = “windows”,“two” = “ Unix ”,“three” = “ Mac ” }这就是table,用pairs ( b ) 可以遍历所有元素;

c =  1,2,3,4,5,6,7,“one” = “windows”,“two” = “ Unix ”,“three” = “ Mac ” }这是table,但其中有数组元素,此时用pairs 和 ipairs 遍历就不同了,如此一来就能区别两者的不同之处。

6. break 和 return ,这两个语句用于跳出当前的块,比较简单,不用多说了。

今天先到这里,明天继续。

0 0
原创粉丝点击