lua语言理论及应用

Lua语言技术(其三)

Lua内置库

直接require库名就可以用,也可以直接库名.方法名,无需require
eg:math库
image
其余库如: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()、
协程的挂起(暂停)
image
image
协程的状态
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
继承实例:
屏幕截图 2026-07-08 225224
多态实例:
屏幕截图 2026-07-08 225205

Lua的GC

image

posted @ 2026-07-08 22:54  yankee_blog  阅读(1)  评论(0)    收藏  举报