使用主表内的函数编辑主表内的子表

问题描述 投票:0回答:1

是否可以使用功能来编辑另一个表内部的表的内容?

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

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

我正在尝试索引错误? (零值)有可能实现这一目标吗?它在桌子外面工作,我用过:

print(MainTable.subtable.x+1)

为什么它在桌子内不起作用?作为对象的表是否起作用?

谢谢!

lua lua-table
1个回答
2
投票

Lua表不是对象;仅仅因为您在addX中声明了MainTable,所以它不知道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()
© www.soinside.com 2019 - 2024. All rights reserved.