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

Lua如何在不使用循环的情况下将二维表的第一个成员放入新表中?,lua,Lua,我正在使用LUA脚本。我有以下数据: choice = { { 'A', '1' }, { 'B', '2' }, { 'C', '3' }, } 我想在不使用循环的情况下将第一个成员放入新表。这些可能吗?类似这样的: first = { 'A', 'B', 'C' } second = { '1', '2', '3' } 你不能 唯一的方法是使用循环。您可以将循环放入一个函数中,这样

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

choice = {
               { 'A', '1' },
               { 'B', '2' },
               { 'C', '3' },
         }
我想在不使用循环的情况下将第一个成员放入新表。这些可能吗?类似这样的:

first = { 'A', 'B', 'C' }
second = { '1', '2', '3' }
你不能 唯一的方法是使用循环。您可以将循环放入一个函数中,这样您就看不到它,但它仍然会在那里。

您不能这样做
唯一的方法是使用循环。您可以将循环放入一个函数中,这样您就看不到它了,但它仍然会存在。

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

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))

在f中,您选择的第一个元素的副本没有循环,事实上,表中隐藏了循环。解包没有快速解决方案。更复杂的解决方案取决于您想做什么,因此,如果您只想选择第一个元素,可以使用:

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))
如果您选择了没有循环的第一个元素的副本,那么实际上在表中隐藏了循环。解包

这个计数是:first={choice[1][1],choice[2][1],choice[3][1]}?这个计数是:first={choice[1][1],choice[2][1],choice[3][1]}?