使用可维护内部的函数编辑可维护内部的表

Editing a subtable inside a maintable using a function inside the maintable

是否可以使用函数编辑另一个 table 中的 table 的内容?

local MainTable = {
  subtable = {
    x = 0,
    y = 0
 }, 

 addX = function() 
  subtable.x = subtable.x + 1
 end
}

我在尝试索引时遇到错误? (零值) 有可能实现这一目标吗? 它在 table 之外工作,我使用:

print(MainTable.subtable.x+1)

为什么在 table 中不起作用? table对象是否起作用?

谢谢!

Lua 表格不是对象;仅仅因为你在 MainTable 内声明 addX,它不知道 MainTable.

内的任何其他内容

一个解决方案是:

local MainTable
MainTable = {
...
   addX = function()
      MainTable.subtable.x = MainTable.subtable.x + 1
   end
}

但更好的方法是

local MainTable = {
   subtable = {
      x = 0,
      y = 0
   }
}

function MainTable:addX() 
   self.subtable.x = self.subtable.x + 1
end

-- Use it as:
MainTable:addX()