代码拉取完成,页面将自动刷新
skyClass是lua
的基于元表的class
库
该库加入了基于EmmyLua的类型注释,建议使用EmmyLua插件以获得较好的类型提示
require("class")
---@class a
a = class("a")
-- 构造函数
function a:ctor(name)
self.name = name
self.age = 0
end
-- 创建实例
local a1 = a:new("张三")
a1.age = 12
local a2 = a:new("李四")
a2.age = 14
print(a1.name,a1.age)
print(a2.name,a2.age)
输出
张三 12
李四 14
require("class")
---@class a
a = class("a")
function a:ctor(name)
self.name = name
self.age = 0
end
---* 自定义方法
---@pram year number
function a:grow(year)
self.age = self.age + year
end
local a1 = a:new("张三")
a1.age = 12
a1:grow(4)
print(a1.name,a1.age)
输出
张三 16
require("class")
---@class a
a = class("a")
a.MONEY = 0
function a:ctor(name)
end
---@parm num number
function a.AddMoney(num)
a.MONEY = a.MONEY + num
end
a.AddMoney(1000)
local a1 = a:new()
a1.AddMoney(1000)
print(a.MONEY,a1.MONEY)
输出
2000 2000
require("class")
---@class a
a = class("a")
function a:ctor(name)
self.name = name
self.age = 0
end
---@pram year number
function a:grow(year)
self.age = self.age + year
end
local super
---@class b:a
b = class("b",a)
function b:ctor(name)
a.ctor(self,name)
self.money = 0
end
---@pram num number
function b:earn(num)
self.money = self.money + num
end
local b1 = b:new("李四")
b1.age = 14
b1:grow(5)
b1:earn(5000)
print(b1.name,b1.age,b1.money)
输出
李四 19 5000
require("class")
---@class a
a = class("a")
function a:ctor()
self.num = 0
end
function a:__add(other)
local new = a:new()
new.num = self.num + other.num
return new
end
local a1 = a:new()
a1.num = 10
local a2 = a:new()
a2.num = 5
local a3 = a1 + a2
print(a1.num,a2.num,a3.num)
输出
10 5 15
注意:不要覆盖__index
与__newindex
方法
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。