Function 以面向对象的方式调用相同的函数
标准lua允许我使用变量调用函数。e、 g.见以下代码:Function 以面向对象的方式调用相同的函数,function,oop,lua,Function,Oop,Lua,标准lua允许我使用变量调用函数。e、 g.见以下代码: function person(func) --func value: saySomething local thefunc = func thefunc() --var used to call function works end function saySomething() print("hello") end 所以我的问题是,我们可以用面向对象的方式做同样的事情吗?e、 g: --psuedo cod
function person(func) --func value: saySomething
local thefunc = func
thefunc() --var used to call function works
end
function saySomething()
print("hello")
end
所以我的问题是,我们可以用面向对象的方式做同样的事情吗?e、 g:
--psuedo code to give you a general idea
class test
function test:init(func) --func value: saySomething
self.func = func
end
function test:person()
self:self.func() --this doesnt work
end
function test:saySomething()
print("hello")
end
我找到了解决办法
self[self.func](self) --self.func needs to be a string for it to work
我找到了解决办法
self[self.func](self) --self.func needs to be a string for it to work
在以
:
作为分隔符的表中定义函数时,将调用的第一个给定参数设置为函数体的局部变量self
在以:
作为分隔符的表中调用函数会将表引用作为第一个参数添加到参数列表中
local myclass = {}
function myclass:saySomething()
print(self)
end
myclass.saySomething("Jiiiiiii~") -- Jiiiiiii~
function myclass.saySomething(self)
print(self)
end
myclass:saySomething() -- table: 0x000a6ea0
正如您所看到的,它旨在将这种形式的调用和函数一起用于Lua中的OO
进一步说,你应该看一看
当需要私有成员时,可以在对象构造函数中隐藏这些变量,请参见。在表中定义一个函数,并使用
:
作为分隔符,将调用的第一个给定参数设置为局部变量self
,以用于函数体
在以:
作为分隔符的表中调用函数会将表引用作为第一个参数添加到参数列表中
local myclass = {}
function myclass:saySomething()
print(self)
end
myclass.saySomething("Jiiiiiii~") -- Jiiiiiii~
function myclass.saySomething(self)
print(self)
end
myclass:saySomething() -- table: 0x000a6ea0
正如您所看到的,它旨在将这种形式的调用和函数一起用于Lua中的OO
进一步说,你应该看一看
当需要私有成员时,可以在对象构造函数中隐藏这些变量,请参见。您可以使用
self.func=test.saySomething
,然后执行self:func()
,在self
上调用方法saySomething
,不需要存储函数的键。您可以使用self.func=test.saysome
和doself:func()
稍后在self
上调用方法saysome
,不需要存储函数的键。您可以执行self:func()
您可以执行self:func()