一段时间以来,我一直在通过使用函数和诸如角色进度跟踪的东西来管理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,我将如何将其结构化为现在的结果?