您的位置:首页 > 编程语言 > Lua

Lua初探笔记初步

2017-07-09 15:55 169 查看
Lua所提供的机制是C不善于的:高级语言、动态结构、简洁、易于测试和调试等。易整合语言(glue language)。可扩展性简单高效率与平台无关
1.Lua认为0和空串都是真,仅有false和nil为假。
lua 8种类型:number,string,function,nil,boolean,userdata,thread,table.

f={"a","b","c"}
list=nil
for line in f do
list={next=list,value=line}
end

lua 3种if语句:
if bool then
--body
end;
--
if bool then
--body
else
--body
end;
--
if bool then
--body
elseif bool then
--body
else
end;

lua for语句 2类:
for var=exp1,exp2,exp3 do
end;
exp3默认step=1

for i,v in ipairs(a) do
--对num进行遍历
end

for i,v in pairs(a)do
--对table进行遍历
end

o:func(n) <--> o.func(o,n)

unpack(a)  --返回a的所有元素
unpack的lua代码实现:
function unpack的lua代码实现(t,i)
i=i or 1
if t[i] then
return t[i] ,unpack的lua代码实现(t,i+1)
end
end

()用来函数定义和使用,{}用来定义table,[]用来索引table元素。

tab={d=function ()
print("tab.d")
end}
function tab.a()
print("tab.a")
end
tab.c=function ()
print("tab.c")
end
for i,v in pairs(tab) do
tab[i]()  or v()
end
table.sort( tab,function (a,b)
return a<b
end )

6.1闭包:

function newCounter()
local i = 0
return function ()
i=i+1
return i
end
end
c1=newCounter()
print(c1())
print(c1())

OldSin=math.sin
function math.sin( x )
return OldSin(x*math.pi/180)
end

尾调用。

7.1迭代器与闭包:
迭代器可以遍历集合的每一个元素。
function list_iter( t )
local i = 0
local n = table.getn(t)  --lua5.2后 table.getn()已失效
return function ()
i=i+1
if i<=n then return t[i] end
end
end;
list_iter是一个工厂,每次调用他都会创建一个闭包(迭代器本身),闭包保存着内部局部变量(i,n,t).
list_iter中是返回t中的下一个元素值,直到nil。所以我们可以通过一个循环语句遍历list_iter迭代器
来达到遍历t中每一个元素的效果。
lua范性for的两种实现ipairs()的方式:
1:非闭包实现ipairs():
function iter(a,i )  --迭代器/迭代函数
i=i+1
if a[i] then
return i,a[i]
else
return nil
end
function aaa( tab )  --返回迭代函数(iter、状态常量(tab)、控制变量(0),将状态常量和控制变量作为参数调用迭代函数。
return iter,tab,0
end
tab={"zzz","bbb","de"}
for i,j in aaa(tab)do
print(i,j)      --输出
end
-----------------------------------------------
2.闭包实现ipairs()
function bbb( tab )
local i = 0  		--作为下面匿名函数的upvalue,和下面匿名函数共同构成一个闭包。
return function ()
i=i+1
if tab[i] then
return i,tab[i]
else
return nil
end
end
end
for i,j in bbb(tab)do
print(i,j)   	--输出
end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Lua 初学