使用索引或值在Lua中搜索表格。

所以,如果我有一个颜色表:

colour["red"] = 1
colour["blue"] = 4
colour["purple"] = 5

如果我想把红色加到蓝色上,我可以轻松地获取红色和蓝色的数字值,但是在得到值5之后,我能否在不扫描整个表的情况下返回“purple”?

点赞
用户2198692
用户2198692

如果颜色数是唯一的,您需要一个具有哈希和数组部分的表格。例如:

colour["purple"] = 5
colour[5] = "purple"

您可以创建一个小帮助函数,以便更轻松地填充表格,例如:

function addColour(coltab, str, val)
    coltab[str] = val
    coltab[val] = str
end
2013-05-27 15:58:09
用户204011
用户204011

@W.B.的答案很好,如果你想要更神奇的东西,你可以使用这个变体,使用__newindex元方法:

local colour = setmetatable({}, {
  __newindex = function(self,k,v)
    rawset(self,k,v)
    rawset(self,v,k)
  end
})

colour["red"] = 1
colour["blue"] = 4
colour["purple"] = 5

print(colour["purple"]) -- 5
print(colour[4]) -- blue
2013-05-28 08:57:57