Lua学习五----------Lua循环

? 版权声明:本文为博主原创文章,转载请注明出处

1.循环类型

  1.1 while循环

    - 语法:while(condition) do ...<执行语句> end

    - 解析:判断condition是否为true,为true执行语句,false结束循环

  1.2 for循环

    1.2.1 数值for循环

      - 语法:for var = exp1, exp2, exp3 do ...<执行语句> end

      - 解析:var从exp到exp2,步长为exp3(可选,默认为1);exp1,exp2,exp3都是数值

    1.2.2 泛型for循环

      - 语法:

        1)for k, v in pairs(tab) ...<执行语句> end

        2)for k, v in ipairs(tab) ...<执行语句> end

      - 解析:

        1)通过迭代器函数pairs来遍历table的所有值,tab是一个table,k是索引,v是索引对应的值

        2)ipairs与pairs作用相似,不过pairs遍历所有key,ipairs只遍历key值为整数的

  1.3 repeat...until循环

    - 语法:repeat ...<执行语句> until(condition)

    - 解析:先执行语句,然后判断condition是否为true,为true继续执行语句,false结束循环(repeat...until循环至少执行一次)

  1.4 嵌套循环

    - 在循环内再嵌套一个或多个循环

2.循环控制语句

  2.1 break语句

    - 退出当前循环语句,并开始执行紧接着的语句

3.无限循环

  - 在循环体中,如果条件永远为true,循环语句就会永远执行下去

4.loops.lua

print("while:")
a = 0
while(a < 3) do
	local x = a * 3 - 1
	print("x = " .. x)
	a = a + 1
end

print("\nfor:")
for i = 1, 5 do									-- 数值for循环,默认步长为1
	print("第" .. i .. "次循环")
	i = i + 1
end
print()
for i = 5, 1, -2 do								-- 数值for循环,步长为-2
	print("第" .. i .. "次循环")
	i = i + 1
end

tab = {
	key1 = "val1",
	key2 = "val2",
	"val3"
}

print("\npairs:")
for k, v in pairs(tab) do						-- 泛型for循环,pairs可迭代table中的所有key
	print("k = " .. k .. " , v = " .. v)
end
print("\nipairs:")
for k, v in ipairs(tab) do						-- 泛型for循环,ipairs只可迭代table中key值为整数的
	print("k = " .. k .. " , v = " .. v)
end

print("\nrepeat:")
x = 0
repeat											-- repeat...until循环,先执行后判断条件,所以至少执行一次
	print("x = " .. x)
	x = x - 1
until(x < 0)

print("\nNested loop:")							-- 嵌套循环,在一个循环里嵌套一个或多个循环语句
y = 2
while(y > 0) do
	for j = 1, 3 do
		print(y .. " * " .. j .. " = " .. j * y)
	end
	y = y - 1
end

print("\nbreak:")
for i = 0, 10 do								-- break,退出当前循环或语句
	print("i = " .. i)
	if(i == 2) then
		print("break...")
		break
	end
end

5.效果预览

参考:http://www.runoob.com/lua/lua-loops.html

时间: 2024-11-05 01:01:27

Lua学习五----------Lua循环的相关文章

Lua学习笔记--Lua调用C初探

上次学习了怎么用C调用Lua的函数,并返回一个结果,这次看看怎么反过来,用Lua调用C的函数. 一.简介 C调用Lua函数比较简单,只需要操作相关的栈就可以了,但是Lua调用C的话,稍微有一点麻烦,虽然还是用栈来进行数据的传递,但是由于Lua中本身没有C中写的函数,所以需要多一步将C函数注册到Lua中的步骤. Lua反过来调用C函数的话,首先,我们要写一个要被调用的函数,这个函数有一个格式的要求 ,返回值为int,但是这个int并不代表Lua函数的返回值,而是函数返回值的个数,Lua支持多重返回

lua学习之for循环

在Lua中for语句跟其他语言的for类似,语法上有一点点区别.Lua的for语句有两种:数字型和泛型 数字型: for var=exp1,exp2,exp3 do <执行体> end var从exp1变化到exp2,每次变化以exp3为步长递增var,并执行一次"执行体".exp3是可选的,如果不指定,默认为1.例如 for i=1,f(x) do print(i) end for i=10,1,-1 do print(i) end for的三个表达式在循环开始前一次性求

lua学习:lua实现面向对象

之前写过一篇关于lua实现面向对象的文章,借助元表和元方法实现,感觉也是有点乱. 我们可以参考cocos2d-x自己给出的类的实现,也即在luaBinding目录下extern.lua的文件中给出的实现: function class(classname, super) -- print(classname) local superType = type(super) local cls if superType ~= "function" and superType ~= "

Lua学习九----------Lua字符串

? 版权声明:本文为博主原创文章,转载请注明出处 1.Lua字符串 - ''单引号间的一串字符 - ""双引号之间的一串字符 - [[]]之间的一串字符 2.Lua转义字符 3.字符串操作 - string.upper(argument):将字符串全部转换成大写 - string.lower(argument):将字符串全部转换成小写 - string.gsub(mainString, findString, replaceString, num):替换字符串 - mainString

Lua学习六----------Lua流程控制

? 版权声明:本文为博主原创文章,转载请注明出处 Lua流程控制 - 通过程序设定一个或多个条件语句 - 在条件为true时执行指定程序代码,在条件为false时指定其他指定程序代码 - 控制结构语句:if语句.if...else语句.if嵌套语句 1.if语句 - 语法:if(布尔表达式) then ...<条件为true时执行语句> end 2.if...else语句 - 语法:if(布尔表达式) then ...<条件为true时执行语句> else ...<条件为fa

Lua学习十----------Lua数组

? 版权声明:本文为博主原创文章,转载请注明出处 1.LUA数组 - 一维数组 - 多维数组 2.array.lua -- 一维数组 print("一维数组") array1 = {"Lua", "Tutorial"} for i = 0, 2 do print(array1[i]) end -- 二维数组 print("二维数组") array2 = {} for i = 0, 3 do array2[i] = {} for

Lua学习笔记(五):函数

函数有两种用途: 1).完成指定的任务,这种情况下函数作为调用语句使用: 2).计算并返回值,这种情况下函数作为赋值语句表达式使用. 1 function func_name (arguments-list) 2 statements-list; 3 end; 4 5 --调用函数的时候,如果参数列表为空,必须使用()表明是函数调用 6 print(8*9, 9/8) 7 a = math.sin(3) + math.cos(10) 8 print(os.date()) 9 10 --上述规则有

lua学习项目笔记

这几天草草的浏览了一下电子版的<lua程序设计>,没有懂的地方就自动忽略了,挑拣了一些可以理解的部分一直在推进.推进至后面的时候已经浑浑噩噩的了,有种想看完这本书的强迫症的感觉.推进CAPI部分的时候发现难度一下子提升了,有种难以理解的感觉,而且这本书没有相对应的练习,只是看书没有进行相应的实践,确实难度比较大.这里先暂缓推进这本书的进程,决定拿一下小的项目来试试写lua代码的感觉,写完这个项目在回去体会lua程序设计这本书,这样可能效果会更好一些.这里我会列出项目描述,而且会记录完成这个项目

Lua学习笔记(七):迭代器与泛型for

1.迭代器与闭包 迭代器是一种支持指针类型的结构,它可以遍历集合的每一个元素.在Lua中我们常常使用函数来描述迭代器,每次调用该函数就返回集合的下一个元素. 迭代器需要保留上一次成功调用的状态和下一次成功调用的状态,也就是他知道来自于哪里和将要前往哪里.闭包提供的机制可以很容易实现这个任务.记住:闭包是一个内部函数,它可以访问一个或者多个外部函数的外部局部变量.每次闭包的成功调用后这些外部局部变量都保存他们的值(状态).当然如果要创建一个闭包必须要创建其外部局部变量.所以一个典型的闭包的结构包含