我希望在 lua 中有一个类似于 Java HashMap 的简单数据结构。
这样做的目的是,我希望维护一个唯一的键“userID”,该键映射到一组不断更新的两个值,例如;
'77777', {254, 24992}
关于如何实现这一目标有什么建议吗?
-- Individual Aggregations
local dictionary = ?
-- Other Vars
local sumCount = 0
local sumSize = 0
local matches = redis.call(KEYS, query)
for _,key in ipairs(matches) do
local val = redis.call(GET, key)
local count, size = val:match(([^:]+):([^:]+))
topUsers(string.sub(key, 11, 15), sumCount, sumSize)
-- Global Count and Size for the Query
sumCount = sumCount + tonumber(count)
sumSize = sumSize + tonumber(size)
end
local result = string.format(%s:%s, sumCount, sumSize)
return result;
-- Users Total Data Aggregations
function topUsers()
-- Do sums for each user
end
最佳答案
假设您要询问的是字典:
local dictionary = {
['77777'] = {254, 24992},
['88888'] = {253, 24991},
['99999'] = {252, 24990},
}
棘手的部分是键是一个字符串,无法转换为 Lua 变量名称,因此必须用 []
包围每个键。我在 Lua 5.1 reference manual 中找不到对此规则的明确描述。 ,但是Lua wiki表示如果一个键“由下划线、字母和数字组成,但不以数字开头”,则按上述方式定义时才不需要 []
,否则为方 block 括号是必需的。
关于data-structures - 如何在 Lua 中创建 HashMap<Int, Int[]> 的等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21881869/