Lua - 管理表...面向对象?

已经有一段时间了,我一直在通过使用函数等方法来管理 Lua 表格来跟踪角色的进度。最近,我越来越多地阅读关于面向对象方法和元表的内容,我想知道这是否是更好的处理方式。例如,以下是跟踪进度的详细信息:

当角色首次初始化时,我会执行:

init_tracker(pname, reset)

它会拉取起始数据库的文本文件模板。该模板将表格拆分成以下内容:

Player Name {
  Exp {
   这里有几个键,值为 0
  },
  Quests {
   这里有几个键,值为 0
  },
  Campaigns {
   这里有几个键,值为 0
  },
}

等等。在玩家名称下面还有其他键,但这是表格结构的要点。我跟踪每个年、月、周、日、小时和每个级别的统计数据,并在适当的时候重置它们的值,同时跟踪它们的先前统计数据(上周、去年、上个月等)。为此,我有函数来遍历每个表格,将其复制到上一个表格中,然后重置当前表格上的值。

使用元表和方法更好吗?例如,我应该执行:

Player["Current"]:update()

使用 update 函数作为方法,而不是使用

for i, v in pairs(Player["Current"]) do
  Player["Last"][i] = v
  Player["Current"][i] = 0
end

(顺便说一下,它似乎不再起作用了,因为它总是显示为 0)?

如果我最好使用 OO,我该如何将它构造成我现在拥有的内容?

点赞