Lua 如何继承方法?
我想从“CreateInherited”的“Create”中继承方法“GetName”或其他方法,我想从“CreateInherited”中保存唯一的方法(如“getInheriteName”),但我不知道怎么做 我的测试代码:Lua 如何继承方法?,lua,Lua,我想从“CreateInherited”的“Create”中继承方法“GetName”或其他方法,我想从“CreateInherited”中保存唯一的方法(如“getInheriteName”),但我不知道怎么做 我的测试代码: local MainTbl = {} function MainTbl:Create(name) local tbl = {} tbl.name = name or 'Null' function tbl:GetName()
local MainTbl = {}
function MainTbl:Create(name)
local tbl = {}
tbl.name = name or 'Null'
function tbl:GetName()
return self.name
end
setmetatable(tbl, self)
self.__index = self
return tbl
end
function MainTbl:CreateInherited(name)
local tbl = {}
tbl.name = name or 'Null'
function tbl:GetInheritName()
return self.name
end
setmetatable(tbl, self)
self.__index = self
return tbl
end
local Man = MainTbl:Create('Man')
local Woman = MainTbl:CreateInherited('Woman')
print(Man:GetName())
print(Woman:GetName())
print(Woman:GetInheritName())
如果我理解你的意思,你试图把两个不同的构造函数放到一个类中。请注意,
Create
完成了CreateInherited
需要完成的大部分工作,因此您可以通过调用Create
insideCreateInherited
来保存大量重复的代码。您可以从Create
的完全格式实例开始,并向其中添加方法,而不是从空表开始
function MainTbl:CreateInherited(name)
local tbl = self:Create(name)
function tbl:GetInheritName()
return self.name
end
return tbl
end
如果我理解你的意思,你试图把两个不同的构造函数放到一个类中。请注意,
Create
完成了CreateInherited
需要完成的大部分工作,因此您可以通过调用Create
insideCreateInherited
来保存大量重复的代码。您可以从Create
的完全格式实例开始,并向其中添加方法,而不是从空表开始
function MainTbl:CreateInherited(name)
local tbl = self:Create(name)
function tbl:GetInheritName()
return self.name
end
return tbl
end
我真的没想过。我真的没想过。