lua语言理论及应用
Lua语言技术(其三)
Lua内置库
直接require库名就可以用,也可以直接库名.方法名,无需require
eg:math库

其余库如:string,table,sort,os,io
增强内置库如:json,string',table'
见Lua常见内置库
关键字补充
三目运算符
and:有假则假
or:有真则真
eg:
x=1
y=2
sanmu=(x>y)and x or y
协调程序
不同于C#每一帧执行一次,Lua只看启动一次执行一次
两种创建形式
fuc=function()
print(123)
end
co1=coroutine.create(fuc)
co2=coroutine.wrap(fuc)
print(type(co1),type(co2))--co1为线程thread,co2为函数function
对应两种运行方式
coroutine.resume(co1)
co2()、
协程的挂起(暂停)


协程的状态
print(coroutine.status(co))
--dead 结束
--suspended 暂停
--running 运行中
print(coroutine.running())--可以获得当前运行协程的线程号
封装、继承、多态
详细
综合举例:
Object={}--所有对象的基类
function Object:new()--只要子类继承了基类就使用这个new方法
local obj={}--局部变量才可同名多值
self.__index=self--元表找不到属性就是原表自己index
setmetatable(obj,self)--谁调用我我的元表就是谁
return obj--生成新对象返回
end
--继承
function Object:subClass(className)--继承一个类,冒号的第一个值就是self
_G[className]={}
local obj=_G[className]--用临时变量存起来
--实现多态,设置自己的父类
self.__index=self--给子类设置元表
setmetatable(obj,self)
end
继承实例:

多态实例:

Lua的GC
