Lua初探笔记(一)
来源:互联网 发布:文明6金钱修改器 mac 编辑:程序博客网 时间:2024/06/06 01:59
Lua所提供的机制是C不善于的:高级语言、动态结构、简洁、易于测试和调试等。
易整合语言(glue language)。可扩展性;简单;高效率;与平台无关。
1.Lua认为0和空串都是真,仅有false和nil为假。
lua 8种类型:number,string,function,nil,boolean,userdata,thread,table.f={"a","b","c"}list=nilfor line in f dolist={next=list,value=line}endlua 3种if语句:if bool then--bodyend;--if bool then--bodyelse--bodyend;--if bool then--bodyelseif bool then--bodyelseend;lua for语句 2类:for var=exp1,exp2,exp3 doend;exp3默认step=1for i,v in ipairs(a) do--对num进行遍历endfor i,v in pairs(a)do--对table进行遍历endo:func(n) <--> o.func(o,n)unpack(a) --返回a的所有元素unpack的lua代码实现:function unpack的lua代码实现(t,i)i=i or 1if t[i] thenreturn t[i] ,unpack的lua代码实现(t,i+1)endend()用来函数定义和使用,{}用来定义table,[]用来索引table元素。tab={d=function ()print("tab.d")end}function tab.a()print("tab.a")endtab.c=function ()print("tab.c")endfor i,v in pairs(tab) dotab[i]() or v()endtable.sort( tab,function (a,b)return a<bend )6.1闭包:function newCounter()local i = 0return function ()i=i+1return iendendc1=newCounter()print(c1())print(c1())OldSin=math.sinfunction math.sin( x )return OldSin(x*math.pi/180)end尾调用。7.1迭代器与闭包:迭代器可以遍历集合的每一个元素。function list_iter( t )local i = 0local n = table.getn(t) --lua5.2后 table.getn()已失效return function ()i=i+1if i<=n then return t[i] endendend;list_iter是一个工厂,每次调用他都会创建一个闭包(迭代器本身),闭包保存着内部局部变量(i,n,t).list_iter中是返回t中的下一个元素值,直到nil。所以我们可以通过一个循环语句遍历list_iter迭代器来达到遍历t中每一个元素的效果。
lua范性for的两种实现ipairs()的方式:1:非闭包实现ipairs():function iter(a,i ) --迭代器/迭代函数i=i+1if a[i] thenreturn i,a[i]elsereturn nilendfunction aaa( tab ) --返回迭代函数(iter、状态常量(tab)、控制变量(0),将状态常量和控制变量作为参数调用迭代函数。return iter,tab,0endtab={"zzz","bbb","de"}for i,j in aaa(tab)doprint(i,j) --输出end-----------------------------------------------2.闭包实现ipairs()function bbb( tab )local i = 0 --作为下面匿名函数的upvalue,和下面匿名函数共同构成一个闭包。return function ()i=i+1if tab[i] thenreturn i,tab[i]elsereturn nilendendendfor i,j in bbb(tab)doprint(i,j) --输出end
阅读全文
1 0
- Lua初探笔记(一)
- lua学习初探【一】
- Lua学习笔记--函数初探
- Lua学习笔记--Lua调用C初探
- Lua学习笔记(一)
- Lua学习笔记(一)
- Lua学习笔记(一)
- Lua学习笔记(一)
- Lua学习笔记(一)
- 学习Lua笔记(一)
- Lua学习笔记(一)
- Lua学习笔记(一)
- Sprite Kit学习笔记(一)初探
- Sprite Kit学习笔记(一)初探
- Sprite Kit学习笔记(一)初探
- C++学习笔记(一):初探容器
- LuaJava学习笔记[1]初探Lua
- LUA 源码阅读笔记(一)
- Python的函数、模块、包和库
- C语言数组与指针
- Ant 打包
- python学习(9)——函数式编程
- java之开发模式
- Lua初探笔记(一)
- 课程4
- 2017.7.9 C组 总结
- JAVA中“this”关键字的使用
- 省赛模拟一 阶乘除法
- mysql 优化(一)
- python 数据
- css设置禁止文字被选中
- github之log命令