Function 函数作为参数lua
我的问题如下: 我希望有一个函数可以在lua中创建一个新对象,但是应该可以扩展它Function 函数作为参数lua,function,parameters,lua,Function,Parameters,Lua,我的问题如下: 我希望有一个函数可以在lua中创建一个新对象,但是应该可以扩展它 function Class(table) local a = {} local t = {create = _create, __newindex = function(o,k,v) if k == "create" then --getmetatable(o).create = function() --_create(o)
function Class(table)
local a = {}
local t = {create = _create, __newindex = function(o,k,v)
if k == "create" then
--getmetatable(o).create = function()
--_create(o)
--v()
--end
-- or just create(v.params)
else
rawset(o,k,v)
end
end,
}
setmetatable(a,t)
t.__index = t
end
function _create(o,...)
return newTable
end
ele = Class:create()
function Class:create( n )
self.name = n
end
ele2 = Class:create("bbbb")
现在ele2没有名称,但它可以创建一个新对象,并使用给定的字符串作为名称
我可以从newindex中获取给定值(类型函数)的参数吗?或者我可以执行该值吗?有几件事我不确定。正如Etan所说,什么是
newTable
,当Class
是一个函数时,为什么要尝试将create
设置为Class
的函数
如果您正在寻找一种在创建类实例时初始化类实例的方法,则可以执行以下操作:
function Class()
local class = {}
class.__index = class
return setmetatable(class, {__call = function(...)
local instance = setmetatable({}, class)
if instance.init then
instance:init(select(2, ...))
end
return instance
end})
end
--now an example:
Dog = Class()
function Dog:init(name)
self.name = name
end
function Dog:bark()
print(string.format("%s barked!", self.name))
end
local pedro = Dog("Pedro")
pedro:bark() --> pedro barked!
什么是
a
?什么是新表格?你给过元表函数吗?(当Class
是一个函数时,Class:create
如何工作?)