lua语句结构3--控制结构

1.控制结构
if/for/while -----> end
until -------> repeat

lua中除了false和nil之外,其他值均为true。

2.if then else
其中的else部分可有可无。

if a < 0 then a = 0 end
if a < b then return a else return b end
if line > MAXXLINES then 
	showpage()
	line = 0
end

以及嵌入的elseif语句:

if opt == "+"  then 
	r = a + b
elseif op == "-" then 
	r = a - b
elseif op == "*"  then 
	r = a * b
else 
	error("invalid operation")
end

3.while

local i = 1
while a[i] do 
	print(a[i]) 
	i = i + 1
end 

4.repeat语句
重复执行直到条件为真

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

5.for语句
(1) numeric for 结构如下:

for var = exp1, exp2, exp3 do
	something
end

其中exp3为步长,没有指定时默认为1。且所有表达式只被执行一次。

--其中f(x)只被执行一次
for i=1f(x)  do print(x)  end 
for i=10,1,-1 do print(i)   end

保存下标:

--find a value in a list
local found = nil 
for i = 1, a.n do  
	if a[i] == value then  
		found = i  -- save value of i
		break
	end
end
print(found)

(2) generic for 结构

--print all values of array "a"
--数组,使用表结构,只是下标采用数字
for i,v in ipairs(a) do print(v) end

其中i指的索引,而v指的是索引对应的值。
下面的程序将遍历表中所有的key值:

--print all keys of table 't'
for k in pairs(t) do print(k) end

具体用法

  days = {"Sunday", "Monday", "Tuesday", "Wednesday","Thursday", "Friday", "Saturday"}
revDays = {}
for i, v in ipairs(days)  do 
	revDays[v] = i
end
--得到的revDays形式如下:
 revDays = {["Sunday"] = 1, ["Monday"] = 2,
 ["Tuesday"] = 3, ["Wednesday"] = 4,
 ["Thursday"] = 5, ["Friday"] = 6,
 ["Saturday"] = 7}

6.break/return

http://www.lua.org/pil/4.4.html
文档中说需要将break/return写在一个block中的
最后一条语句(这里不太理解,先保留)。

local i = 1
while a[i] do 
--break is the last statement of then block
	if a[i] == v then break end 
	i = i + 1
end

加上return可以避免某些语句块的执行。

function foo ()
	return  ----SYNTAX ERROR
	--'return' is the last statement in the next block
	do return end  ----OK
	...           -------statements not reached
end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值