闭包
基本用法
function closureFunction (a)
local a = a or 0
return function ()
a = a + 1
print (a)
end
end
local f1 = closureFunction();
for i=0 ,10 do
f1();
end
静态变量
function staic (v )
local t = {}
t.staic_ = v or 0
function t .set (v )
t.staic_ = v
end
function t .get (v )
return t.staic_
end
return t
end
local staicv = staic()
print(staicv.get ())
staicv.set (9 )
print(staicv.get ())
随机数
math .randomseed(tostring (os .time()):reverse():sub(1 , 8 ))
print (math .random(0 , 2 ))
字符串
print (string .format("cloud_%02d.png" , 2 ))
表
遍历删除表项
-- 删表时从后往前删,不然删了前面的后面索引会变动。
local array = {1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 }
for index = #array , 1 , -1 do
print("array:" ,array [#array ])
table.remove(array , index)
end
表长度 取值
POETRY_DATA = {
李白 = {
"花间一壶酒,独酌无相亲" ,"举杯邀明月,对影成三人" ,"我歌月徘徊,我舞影零乱" ,[9 ] = "hehe"
}
}
print (POETRY_DATA.李白[1 ])
print (POETRY_DATA["李白" ][1 ])
print (POETRY_DATA.李白[9 ])
print (table .getn(POETRY_DATA.李白))
print (#POETRY_DATA.李白)
print (table .maxn(POETRY_DATA.李白))
排序
tbl = {a = "1" , b = "2" , c="3" , d="4" };
table .sort(tbl)
table .foreach(tbl, function (i, v) print (i, " : " ,v)end ) ;
tbl = {1 , 2 , 3 , 5 , 4 }
table .sort(tbl)
print ("数字升序: " , table .concat(tbl, ", " ))
tbl = {"a" , "B" , "c" , "d" , "f" , "e" }
table .sort(tbl)
print ("字符升序: " ,table .concat(tbl, ", " ))
function sortDescending (a, b)
return a > b
end
tbl = {"a" , "B" , "c" , "d" , "f" , "e" }
table .sort(tbl, sortDescending)
print ("字符降序: " ,table .concat(tbl, ", " ))
tbl = {1 , 2 , 3 , 5 , 4 }
table .sort(tbl, sortDescending)
print ("数字降序: " , table .concat(tbl, ", " ))
tbl = {1 , "a" , "B" , "c" , 2 , 3 , 5 , "d" , "f" , "e" , 4 }
table .sort(tbl,function (a, b) return string .byte(a) < string .byte(b) end )
print ("数字字符混合 升序:" ,table .concat(tbl, ", " ))
遍历表
tbl = { 6 , 2 ,1 , nil , 5 , 3 , 4 , nil }
table .sort(tbl)
print ("数组中有 nil 的情况: " )
for k, v in ipairs (tbl) do
print (k," : " ,v)
end
tbl = {a = "xx" , 1 , 2 , b="yy" ,3 , nil , 5 , 4 }
print ("数组与列表混用情况: " )
for k, v in pairs (tbl) do
print (k," : " ,v)
end
tbl = {2 , 4 , 6 , language="Lua" ,nil , version="5" , 8 , 10 , 12 , web="hello lua" };
print ("foreachi 遍历数组: " )
table .foreachi(tbl, function (i, v) print (i, " : " , v)end ) ;
tbl = {2 , 4 , 6 , language="Lua" ,nil , version="5" , 8 , 10 , 12 , web="hello lua" };
print ("foreach 遍历 table: " )
table .foreach(tbl, function (i, v) print (i, " : " ,v)end ) ;
协程
co = coroutine .create(function (a,b,c)
print (a, b, c)
a, b, c = 1 , 2 , 3
local s1, s2, s3 = coroutine .yield(a, b, c)
print ("a , b , c : " ,a , b , c)
print ("s1, s2, s3 : " ,s1, s2, s3)
return " 协程结束"
end )
print ("第一波结果: " , coroutine .resume(co, " 第一波_参数1" , " 第一波_参数2" , " 第一波_参数3" ))
print ("第二波结果: " , coroutine .resume(co, "第二波: " , "第二波_参数1" ,"第二波_参数2" ,"第二波_参数3" ))
print ("第三波结果: " , coroutine .resume(co, "第三波" ))
其它
print ("看下自己坑爹的 Lua 版本是多少 :" ,_G ._VERSION )