fact阶乘
local function fact(n)
if n==0 then
return 1;
else
return n*fact(n-1)
end
end
print("input a num:")
a=io.read("*num")
print(fact(a))
for循环
--[[
local i=0
while i*i<100000 do
i=i+1
end
print(i.." * "..i.." = "..i*i)
]]--
local num={1,2,3,4,5,4,3,2,1}
for i,v in ipairs(num) do
if i==3 then
break
end
print(i..":"..v)
end
table
stu1={id="100",name="Tony",age=20}
--[[
print("stu id:"..stu1["id"])
print("stu name:"..stu1["name"])
print("stu age:"..stu1["age"])
print("stu id:"..stu1.id)
print("stu name:"..stu1.name)
print("stu age:"..stu1.age)
for k,v in pairs(stu1) do
print(k.. ":" ..v)
end
--]]
local stulist={"张三","李四","王五","哈啊"}
print("---------1-----------")
for i,v in ipairs(stulist) do
print(i..":"..v)
end
print("---------2-----------")
for k,v in pairs(stulist) do
print(k..":"..v)
end
print("---------3-----------")
for i=1,#stulist do --#stulist
print(i..":"..stulist[i])
end
闭包
function calcultor(opr,a,b)
function add(a,b)
return a+b
end
function sub(a,b)
return a-b
end
local result
if opr=="+" then
result=add(a,b)
else
result=sub(a,b)
end
return result
end
local res=calcultor("+",10,5)
print("10+5="..res)
print("--------------")
function rectangleArea(h,w)
return h*w
end
function traiangleArea(b,w)
return 0.5*b*w
end
--function getArea(type)
-- local returnfunc
-- if type=="rect" then
-- return rectangleArea
-- else
-- return traiangleArea
-- end
-- return returnfunc
--end
function getArea(type)
local returnfunc
if type=="rect" then
returnfunc= function(h,w)
return h*w
end
else
returnfunc= function(b,w)
return 0.5*b*w
end
end
return returnfunc
end
local area=getArea("tria")
print("area=:"..area(10,15)) --rectangleArea(10,15)也可
类
Student={id=100,name="Tony"}
function Student:toString()
local s = "Name:"..self.name..",id:"..self.id
return s
end
function Student:create(o)
o = o or {}
setmetatable(o,self)
self.__index=self
return o
end
stu1=Student:create({id=200,name="Tom"})
print(stu1:toString())
UnPack
这篇文章主要介绍了Lua UnPack函数用法实例,unpack它接受一个数组(table)作为参数,并默认从下标1开始返回数组的所有元素。
local info={1,2,3,4,5,6}
local a,b,c,d,e,f=unpack(info)
print(a,b,c,d,e,f)
输出结果:1 2 3 4 5 6
如果遇到数组下有nil,或者有字母key的时候
local info={1,2,3,nil,5,p=6}
local a,b,c,d,e,f=unpack(info)
print(a,b,c,d,e,f)
输出结果:1 2 3 nil 5 nil
ipairs�的遍历是连续的,一旦遇到不连续的就退出,且对非整数key不能输出(即无视table下的所有非整数key)
pairs的遍历是没顺序,随机的,跟key的哈希值有点关系
总结论:
pairs会遍历table的所有键值。
ipairs就是固定地从key值1开始,下次key累加1进行遍历,如果key对应的value不存在,就停止遍历。