Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua 在同一个表中调用函数的更简单方法?_Lua_Lua Table - Fatal编程技术网

Lua 在同一个表中调用函数的更简单方法?

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会隐式插入对表本身的引

我想知道是否有更简单的方法来调用同一个表的函数或设置变量,而不是编写表名

例如,在下面的示例代码中,是否有更简单的方法从MyClass.setup调用MyClass.test函数

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在表外定义它们,请参见此。