【问题标题】:Lua insert multiple variables into a tableLua将多个变量插入表中
【发布时间】:2012-10-24 06:35:30
【问题描述】:

我的问题是如何(或是否)可以将两个值插入到 lua 表中。

我有一个返回(可变数量的值)的函数

function a(x, y)
   return x, y
end

以及另一个将指针插入表格的函数,

function b(x, y)
   table.insert(myTable, x, y)
end

那么我怎样才能使我可以调用具有可变数量参数的函数 b 并将它们全部插入我的表中?

【问题讨论】:

  • 如目前所写,函数b 将值y 插入位置x。这是你的意图吗?如果你想在一个表中插入多个值,你必须多次调用table.insertThis page 描述了如何处理函数的可变数量的参数;这有帮助吗?

标签: variables insert lua lua-table


【解决方案1】:

如果函数的最后一个参数是...(称为可变参数函数),Lua 解释器会将任何额外的参数放入...。您可以使用{...} 将其转换为表并将键/值复制到名为myTable 的全局表中。下面是你的函数的样子:

function b(...)
  for k, v in pairs({...}) do
    myTable[k] = v
  end
end

b(1, 2) -- {[1] = 1, [2] = 2} is added to myTable

您应该根据是否要替换、合并或追加元素到 myTable 来调整函数。

【讨论】:

    【解决方案2】:

    select 函数作用于可变参数...

    function b(...)
      for i = 1, select('#',...) do
        myTable[#myTable+1] = select(i,...)
      end
    end
    

    例如,

    > myTable = {'a','b'}
    > b('c','d')
    > for i = 1, #myTable do print(myTable[i]) end
    a
    b
    c
    d
    > 
    

    【讨论】:

    • 稍微说明一下,调用b(1,2,nil,4) 会生成表{[1] = 1, [2] = 2, [3] = 4}。根据要求,它可能好也可能不好。
    猜你喜欢
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    • 2014-06-03
    • 2023-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-28
    相关资源
    最近更新 更多