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

时间:2015-04-26 21:26:09

标签: oop lua lua-table

一段时间以来,我一直在通过使用函数和诸如角色进度跟踪的东西来管理Lua表。最近,我一直在阅读越来越多关于OO方法和元数据的内容,我想知道这是否是一种更好的方法来处理这个问题。例如,这是进度跟踪的细分:

首次初始化角色时,我会这样做:

init_tracker(pname, reset)

,它会提取起始数据库的文本文件模板。这个模板按原样分解表格:

Player Name {
  Exp {
   Several keys here, values as 0
  },
  Quests {
   Several keys here, values as 0
  },
  Campaigns {
   Several keys here, values as 0
  },
}

等。播放器名称下还有其他键,但这是表格结构的主要内容。我会跟踪每年,每月,每周,每日,每小时和每个级别的统计数据,这些统计数据会相应地重置,并跟踪他们之前的统计数据(上周,去年,上个月等)。为此,我有遍历每个表的函数,复制到最后一个表,然后重置当前表上的值。

为此使用metatables和方法会更好吗?例如,我应该这样做:

Player["Current"]:update()

使用更新功能作为方法,而不是

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

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

如果我最好使用OO,我将如何将其结构化为现在的结果?

0 个答案:

没有答案