Lua学习笔记(3)–语句

说明:Lua学习笔记的内容都是《Lua程序设计.第二版》的读书笔记,笔记中很多内容都是来自于书中

1.赋值

1)赋值(assignment)的基本含义:修改一个变量或是一个table中元素的值

2)多重赋值:将多个值赋予多个可赋值对象,每个值和每个可赋值对象用逗号隔开,例如

1
a,b = 10, 2 * x -- a的值为10 b的值为2 * x

同时,先对=(赋值)右边的的所有元素求值,再进行赋值,用此可以很方便的交换两个变量的值

1
x, y = y, x

lua总是会将等号右边值的个数调整到和左边一致,如果值的个数少于变量的个数,那么多余的变量赋值为nil,如果值更多,则丢弃 ,注意:尽量保证=(赋值号)左右个数一致来避免一些隐性的错误,例:

1
2
a, b, c = 0,1 -- a = 0, b=1, c = nil
a, b = 0,1,2 -- a = 0, b=1,2被丢弃

2.局部变量:使用local来定义一局部变量,lua中局部变量的概念和其他语言类似,在此不再赘述,使用 do-end来强制创建一个作用域,在lua中有一种习惯写法是

1
local foo = foo

这个语句创建一个局部变量foo并用全局变量foo的值来初始化,这个语句可以保存foo的值,或是加快相应作用域对foo的访问

注:lua中没有用local定义的变量都是全局变量

3.控制结构

1)选择结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
if a < 0 then a = 0 end
if a< 0 then a = 0 else a = 1 end

if op == "+" then
     r = a +b
elseif op == "-" then
     r = a - b
elseif op == "*" then
     r = a * b
elseif  op == "/" then
     r = a / b
else
     error("xxx")
end

lua中没有switch语句

2)循环

①while用法 conditon为假时退出循环

1
2
3
while <conditon> do
     -- do sth
end

②repeat-until(重复直到):condition为真时退出循环 condition中的表达式可以访问循环体中的局部变量

1
2
3
repeat
     -- do sth
until <conditon>

③数字型for

1
2
3
for var = exp1, exp2, exp3 do
     --do sth
end

var 从exp1变化到exp2以exp3为步长如果不指定exp3默认为1 exp1,exp2,exp3在循环开始时一次性求值
同时,要取出循环体内的变量必须copy到一个有更大作用域的变量中

1
2
3
4
5
6
7
8
9
10
--在列表中查找一个值
local found = nil

for i = 1, #a do
     if a[i] < 0 then
          found = i
          break    
     end
end
print(found)

④泛型for,例子

1
2
3
4
5
6
7
8
--输出table a中的所有value
for i,v in ipairs(a) do
     print(v)
end
--输出table a中的所有key
for k in pairs(a) do
     print(k)
end

⑤for的特点 :循环体中的都是局部变量、决不硬挨对循环变量赋值

4.break和return只能是一个语句块后的最后一句

1
2
3
4
funtion foo()
return --语法错误
     do return end -- OK
end
发表评论?

0 条评论。

发表评论