Lua 在同一个表中调用函数的更简单方法?
我想知道是否有更简单的方法来调用同一个表的函数或设置变量,而不是编写表名 例如,在下面的示例代码中,是否有更简单的方法从MyClass.setup调用MyClass.test函数Lua 在同一个表中调用函数的更简单方法?,lua,lua-table,Lua,Lua Table,我想知道是否有更简单的方法来调用同一个表的函数或设置变量,而不是编写表名 例如,在下面的示例代码中,是否有更简单的方法从MyClass.setup调用MyClass.test函数 local MyClass = {} function MyClass.test() print("Hello") end function MyClass.setup() MyClass.test() end MyClass.setup() 如果使用:来调用函数,而不是,。Lua会隐式插入对表本身的引
local MyClass = {}
function MyClass.test()
print("Hello")
end
function MyClass.setup()
MyClass.test()
end
MyClass.setup()
如果使用:来调用函数,而不是,。Lua会隐式插入对表本身的引用,作为第一个参数,类似于某些面向对象语言中的this指针。然后您可以说self:test来摆脱名称依赖
local MyClass = {
test = function(self)
print("Hello")
end,
setup = function(self)
self:test()
end
}
MyClass:setup()
如果使用:来调用函数,而不是,。Lua会隐式插入对表本身的引用,作为第一个参数,类似于某些面向对象语言中的this指针。然后您可以说self:test来摆脱名称依赖
local MyClass = {
test = function(self)
print("Hello")
end,
setup = function(self)
self:test()
end
}
MyClass:setup()
您可以将模块表设置为环境:
local print = print
local _ENV = {}
function test()
print("Hello")
end
function setup()
test()
end
setup()
return _ENV
您可以将模块表设置为环境:
local print = print
local _ENV = {}
function test()
print("Hello")
end
function setup()
test()
end
setup()
return _ENV
关键是自我。在状态中,MyClass是一个obj,由{}创建,因此可以使用MyClass.TestMyClass对传入参数MyClass进行测试,以使用MyClass obj的func测试
附言:
Lua提供的语法:
MyClass.setupMyClass=>MyClass:setup
关键是自我。在状态中,MyClass是一个obj,由{}创建,因此可以使用MyClass.TestMyClass对传入参数MyClass进行测试,以使用MyClass obj的func测试
附言:
Lua提供的语法:
MyClass.setupMyClass=>MyClass:setup非常感谢。对于Lua中类似OOP的设计,直接在表{}中编写函数是一种常见的风格吗?我不知道。对于这样短的函数,我倾向于将它们内联。否则,您可以使用函数MyClass:setup self:test end在表外定义它们,请参见此。非常感谢。对于Lua中类似OOP的设计,直接在表{}中编写函数是一种常见的风格吗?我不知道。对于这样短的函数,我倾向于将它们内联。否则,您可以使用函数MyClass:setup self:test end在表外定义它们,请参见此。