【问题标题】:Lua search tables using index or valueLua 使用索引或值搜索表
【发布时间】:2013-05-22 12:25:47
【问题描述】:

如果我有一张颜色表:

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

我想把红色加到蓝色上,我可以很容易地得到红色和蓝色的数值,但是有了值5,我可以让它返回“紫色”而不扫描整个表格吗?

【问题讨论】:

    标签: lua lua-table


    【解决方案1】:

    如果颜色编号是唯一的,您将需要一个包含哈希和数组部分的表。例如:

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

    您可以创建一个有助于填充表格的小辅助函数,例如:

    function addColour(coltab, str, val)
        coltab[str] = val
        coltab[val] = str
    end
    

    【讨论】:

      【解决方案2】:

      @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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-17
        • 1970-01-01
        • 1970-01-01
        • 2017-12-20
        • 2016-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多