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

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

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

我想在不使用循环的情况下将第一成员放入新表中。这是否可能?例如:

first = { 'A', 'B', 'C' }
second = { '1', '2', '3' }
点赞
用户4984564
用户4984564

你不能

唯一的办法是使用循环。你可以把循环放进一个函数中,这样你就看不见它了,但它仍然存在。

2020-05-25 09:04:25
用户7746452
用户7746452

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

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 中第一个元素的副本,无需循环(实际上,table.unpack 中隐藏了循环)。

2020-05-25 09:07:42