面向对象
原创大约 1 分钟
Lua中其实没有类和对象的概念,但它用table
+ function
模拟出了某些面向对象的特性。
-- 元类
Person = {name = "lixingyun", age = 19, gender = "male"}
-- 定义类的结构
function Person:new(person, name, age, gender)
person = person or {}
setmetatable(person, self)
self.__index = self
self.name = name or "lixingyun"
self.age = age or 0
self.gender = gender or "male"
return person
end
-- 定义类的方法
function Person:getName()
print("该用户为:", self.name)
end
-- 创建对象
p = Person:new (person, "wanglin", 20, "male")
-- 访问对象的属性
print(p.name)
print(p.age)
print(p.gender)
-- 调用对象的方法
p:getName()
-- User继承了Person
User = Person:new()
function User:new (user, address)
user = user or Person:new(user, address)
setmetatable(user, self)
self.__index = self
self.address = address or "娆疆"
return user
end
-- 派生类方法getArea
function User:getArea ()
print("该用户目前在:", self.address)
end
-- 创建对象
u = User:new(user, "大唐")
u:getArea()
不过在Lua脚本中,基本上看不到这种创建类和使用类的代码,因为它只是一个脚本而已,无需给自己加那么多戏。
况且Lua基本上都是通过调用Nginx的API
或其他模块的功能来完成任务的。
感谢支持
更多内容,请移步《超级个体》。