lua学习笔记(二)
1.局部变量与块
--控制结构或函数或者程序块的执行体成为块 交互模式下一行算一个块所以如下:
--可以显示的用do end 来划定块 局部变量只在当前的块中有用
local a,b=1,10
if a<b then
print(a)
local a --会匹配一个最近的有效果的局部变量
print(a)
end
print(a,b)
n=10
if n<=10 then
local n = n --可以利用这种特点将全局变量的值赋给局部变量,进而保存全局变量
n = n-1
print(n)
end
print(n)
2.控制结构
--控制结构 循环和分支
--1.if then (elseif then) (else) end
a=10
a=9
a=8
if a==10 then
print(a)
elseif a==9 then
print(2*a)
else
print("a:"..a)
end
if a<=10 then
print("哈哈哈哈哈哈哈")
end
--2. while循环
i=5
while i<=10 do
print(i)
i=i+1
end
--3.类似于C中do while 循环的 repeat until
t=2;
repeat
t=io.read("*number")
until t==6
print(t)
--3.数字型for循环 实例中的i默认为局部变量并且 i=1,9,2只会在一开始时初始化一次
--表示i从1开始每次递增2 i<=9翁跫
for i=1,9,2 do
print(i)
end
--泛型for循环主要是针对表和文件操作的 需要用到迭代器函数
b={1,2,3,4,5,6}
for k,v in pairs(b) do
print(k,v)
end
--break 与 return必须是一个块最后一条语句 即是一个程序块最后一个语句或者是end else 或 until 的前一条语句
local i = 1
for i=1,#b do
if(i==5) then --ok
print(i)
break;
end
end
--[[local i = 1
for i=1,#b do --错误的
if(i==5) then
break;
print(i)
end
end]]
3.赋值
--多重赋值
a,b=1,2;
print(a.." "..b)
a,b=1,2,3;
print(a.." "..b)
--a,b=1;
print(a.." "..b)
--利用多重赋值交换
a=3
b=4
a,b=b,a
print(a.." "..b)
4.函数的多重返回值
--函数形参可以与传的实参个数不同,此时,若形参多,则多余的形参被赋值为nil,若实参多,则多余的实参被舍弃掉
--比较奇葩的地方:当形参只有一个并且是字符串或table类型的变量时 调用时可以不加括号
function printstring(n)
print(n)
end
printstring "123"
function printfive(a,b,c,d,e)
print(a,b,c,d,e)
end
printfive(1,2,3)
printfive(1,2,3,4,5,6)
--多重返回值 不管是赋值,函数中调用函数,把返回值给一个表 还是位于return语句中 都只能在它位于最后时才起作用
--赋值的情况
--1.能够返回多个值 位于赋值的最后面的一个
function f()
return 1,2,3
end
a,b,c = f()
print(a,b,c)
a,b,c,d = 9,f()
print(a,b,c,d)
--2.不能返回多个值 不是位于赋值的最后面一个不会返回多个值
a,b,c = f(),4
print(a,b,c)
--函数调用函数的情况,同理 还是拿f为例
print(f())
print(4,5,6,f())
print(f(),4,5,6)
--把返回值传给一个表
function f0()
return 0,2,4
end
function f1()
return 1,3,5
end
h={f0()}
for k,v in pairs(h) do
print(k,v)
end
h={f0(),f1()}
for k,v in pairs(h) do
print(k,v)
end
--return中调用返回多个值的函数,同理
function f2()
return f1(),8
end
print(f2())
function f3()
return 8,f1()
end
print(f3())
--若返回多值的表达式加了括号,尽管它是最后一个,但它仅返回一个值
print((f3()))
--unpack 它接受一个数组作为参数,并且从1开始返回该数组的所有元素
a={1,2,3,4,5,6,7,8,9,10}
c,d = unpack(a) --注意,这样赋值,c和d都是number类型
print(c,d)
print(unpack(a))
print((unpack(a)))
阅读更多
- (转)Lua学习笔记1:Windows7下使用VS2015搭建Lua开发环境
- Lua table类型学习笔记
- cocos2dx 3.3 + lua 学习笔记(04)--- 动作回调、函数回调、骨骼动画回调
- Lua学习笔记一
- cocos-lua基础学习(九)spite类学习笔记
- lua的学习笔记
- Lua学习笔记二之C中调用Lua
- Lua学习笔记和遇到的问题
- Lua学习笔记之 Type and Values
- lua学习笔记 3 android调用Lua。Lua脚本使用LoadLib回调Java,并传多个参数
- Lua 学习笔记(七) —— 协同程序(三)
- Lua学习笔记(一)
- LUA学习笔记1-Functions
- Lua学习笔记二--在Lua中使用自己的C函数收藏
- Lua入门系列----pil学习笔记之 Type and Values (1)
- lua学习笔记之类型和值
- Lua学习笔记:面向对象
- LUA 学习笔记
- lua学习笔记之函数
- cocos-lua学习笔记(一)下载地址