代码之家  ›  专栏  ›  技术社区  ›  Boontawee Home

Lua如何在不使用循环的情况下将二维表的第一个成员放入新表中?

lua
  •  0
  • Boontawee Home  · 技术社区  · 4 年前

    我正在使用LUA脚本。我有以下数据:

    choice = {
                   { 'A', '1' },
                   { 'B', '2' },
                   { 'C', '3' },
             }
    

    我想在不使用循环的情况下将第一个成员放入新表中。这些可能吗?类似这样的东西:

    first = { 'A', 'B', 'C' }
    second = { '1', '2', '3' }
    
    0 回复  |  直到 4 年前
        1
  •  2
  •   Leszek Mazur    4 年前

    没有快速的解决方案。更复杂的解决方案取决于你想做什么,所以如果你只想选择第一个元素,你可以使用:

    choice = {
                   { 'A', '1' },
                   { 'B', '2' },
                   { 'C', '3' }
             }
    
    first = {}
    firstMeta = getmetatable(first) or {}
    
    function firstMeta.__index(obj, i)
      return choice[i][1]
    end
    function firstMeta.__len(obj)
      return #choice
    end
    setmetatable(first, firstMeta)
    
    f = table.pack(table.unpack(first))
    

    In f 您可以在没有循环的情况下获取所选第一个元素的副本(事实上,表中隐藏了循环。unpack)

        2
  •  1
  •   DarkWiiPlayer    4 年前

    你不能

    做到这一点的唯一方法是使用循环。你可以将循环放入函数中,这样你就看不到它,但它仍然会在那里。