lua学习笔记04


基本语法:lua支持赋值语句,控制结构语句,函数调用,同时也支持多变量赋值,局部变量声明。

Lua可以对多个变量同时赋值,例如:

a,b = 10,2 * x  <--> a = 10 ,b = 2 * x

遇到赋值语句lua会先计算右边所有的值,然后再执行赋值操作,所以,我们可以这样进行交换变量的值:

x,y = y ,x

a[i],a[j] = a[j],a[i]

当变量个数和值的个数不一致时,lua会一直以变量个数为基础采取以下策略:

变量个数>值的个数   按变量个数不足nil

变量个数<值的个数   多余的值会被忽略

 

 

a,b,c = 0,1
print(a,b,c) -- 0   1 nil

a,b = a + 1,b + 1,b +2
print(a,b)   -- 1 2

a,b,c = 0
print(a,b,c) -- 0 nil nil


注意:如果要对多个变量赋值不息依次对每个变量赋值。

多值赋值经常用来交换变量,或将函数调用返回给变量。

a,b = f()  -- f()返回两个值,一个赋给a,一个赋给b

 

局部变量与代码块:

使用local创建一个局部变量,与全局变量不同,局部变量只在被声明的那个代码块内有效。

代码块:指一个控制结构内,一个函数体,或者一个chunk(变量声明的那个文件或者文本串)

x = 10
local i = 1

while i < x do
	local x = i * 2 -- 2,4,6..  x是局部变量
	print(x)
	i = i + 1
end
print("-----------------------")
if i > 20 then
	local x  --x是局部变量
	x = 20
	print(x + 2)
else
	print(x)
end

print(x)--x是定义的全局变量


 

使用局部变量的好处:

1.避免命名冲突

2.访问局部变量的速度比全局变量更快

 

我们给block划定一个明确的界限:do..end内的部分。当你想更好的控制局部变量的作用范围的时候这是很有用的。

a = 1
b = 200
c = 3

do
	local a2 = 2 * a
	local d = math.sqrt(b^2 - 4 * a * c)
	x1 = (-b + d) / a2
	x2 = (-b - d) / a2
end

print(x1,x2)


控制结构语句:

Lua认为falsenil为假,其他值为真。

If有三种形式:

if conditions then

then part

end ;

 

if conditions then

then part

else

else part

end;

 

if conditions then

then part

elseif conditions then

elseif part

.......-->多个elseif

else

else part

end;

While 语句

while condition do

statements;

end;

 

Repeat-until语句

repeat

statemnets ;

until conditions;

 

For循环:

第一种

for var = exp1,exp2,exp3 do

loop-part

End

For 将用exp3作为stepexp1(初始值)到exp2(终止值),执行loop-part。其中exp3可以省略,默认为1

注意:三个表达式只会被执行一次,而且是在循环开始前。

for i = 1,50 do
	print(i)
end

for i = 10 ,1,-2 do
	print(i)
end


 

控制变量var是局部变量自动被声明,并且只在循环内有效。

for i = 1,10 do
	print(i)
end

max = i
print(max)


local found  = nil

for i = 1 ,10 do
	if(found == nil) then
		found = i
	else
		if(i > found) then
			found = i
		end
	end
end

print(found)


 

循环过程中不要改变控制变量的值,那样做的结果是不可预知的。如果要退出循环,使用break

 

第二中,泛型for循环

for i,v in ipairs(a) do print(v) end

 

泛型for循环和数值for循环有两点相同:

1.控制变量是局部变量

2.不要修改控制变量的值

days = {"sunday","monday","tuesday","wednesday","thursday","friday","saturday"}

revDays = {}

for i ,v in ipairs(days) do
	revDays[v] = i
	print(i)
	print(revDays[v])
end

for i = 1,7 do
	x = days[i]
	print(x)
	print(revDays[x])
end

print(revDays["wednesday"])


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值