Я создаю базу данных отслеживания, собираю информацию для отчетов за час, ежедневно, еженедельно, ежемесячно, ежегодно, за уровень, за класс и за уровень.Таким образом, у меня есть таблица с именем tracker
, которая состоит из подмножества таблиц, отражающих различные отчеты (т. Е. table["ThisHour"]
и т. Д.).Мне интересно, есть ли способ объединить все эти строки, которые на самом деле просто добавляют один и тот же бит информации.Вот функция, которую я использую, а также только две подтаблицы (вместо 8, которые я перечислил выше):
function exp_update(xp, gold, str, con, dex, wis, int, luck, bpracs, btrains, pracs, trains, qp)
local xtable = tracker[playername]["Exp"]
addto(xtable["ThisHour"],"Exp",xp)
addto(xtable["ThisHour"],"Gold",gold)
addto(xtable["ThisHour"],"BonusStr",str)
addto(xtable["ThisHour"],"BonusCon",con)
addto(xtable["ThisHour"],"BonusDex",dex)
addto(xtable["ThisHour"],"BonusWis",wis)
addto(xtable["ThisHour"],"BonusInt",int)
addto(xtable["ThisHour"],"BonusLuck",luck)
addto(xtable["ThisHour"],"BonusPracs",bpracs)
addto(xtable["ThisHour"],"BonusTrains",btrains)
addto(xtable["ThisHour"],"Pracs",pracs)
addto(xtable["ThisHour"],"Trains",trains)
addto(xtable["ThisHour"],"Qp",qp)
addto(xtable["ThisHour"],"Quests")
addto(xtable["ThisLevel"],"Exp",xp)
addto(xtable["ThisLevel"],"Gold",gold)
addto(xtable["ThisLevel"],"BonusStr",str)
addto(xtable["ThisLevel"],"BonusCon",con)
addto(xtable["ThisLevel"],"BonusDex",dex)
addto(xtable["ThisLevel"],"BonusWis",wis)
addto(xtable["ThisLevel"],"BonusInt",int)
addto(xtable["ThisLevel"],"BonusLuck",luck)
addto(xtable["ThisLevel"],"BonusPracs",bpracs)
addto(xtable["ThisLevel"],"BonusTrains",btrains)
addto(xtable["ThisLevel"],"Pracs",pracs)
addto(xtable["ThisLevel"],"Trains",trains)
addto(xtable["ThisLevel"],"Qp",qp)
addto(xtable["ThisLevel"],"Quests")
end
Как вы можете видеть, это уже довольно много строк только для двух подтаблиц,Это 14 строк кода для каждой подтаблицы, или, если я добавлю их все, 112 строк кода, которые я хотел бы объединить как можно меньше.
Функция addto такая, как определено весли вам это нужно:
function addto(t,k,v)
t[k] = t[k] + (v or 1)
end