【问题标题】:How do I append to a table in Lua如何附加到 Lua 中的表
【发布时间】:2015-02-10 14:28:52
【问题描述】:

我试图找出相当于:

foo = []
foo << "bar"
foo << "baz"

我不想想出一个递增的索引。有没有简单的方法可以做到这一点?

【问题讨论】:

标签: lua lua-table


【解决方案1】:

您正在寻找 insert 函数,该函数位于主库的 table 部分。

foo = {}
table.insert(foo, "bar")
table.insert(foo, "baz")

【讨论】:

  • 没错。您也不需要分号,但如果您愿意,可以使用 em。
  • @rsethc 在 Stack Overflow 历史上的某个时刻,肯定会同时发布两个“重复”的答案(我敢打赌,我们也不会是最后一个)。公平地说,我确实添加了一些关于内存/时间节省的信息。
【解决方案2】:
foo = {}
foo[#foo+1]="bar"
foo[#foo+1]="baz"

这是因为# 运算符计算列表的长度。空列表的长度为 0 等。

如果您使用的是 Lua 5.3+,那么您几乎可以完全按照您的意愿行事:

foo = {}
setmetatable(foo, { __shl = function (t,v) t[#t+1]=v end })
_= foo << "bar"
_= foo << "baz"

表达式不是 Lua 中的语句,它们需要以某种方式使用。

【讨论】:

  • table.insert略快。
  • 值得注意的是,如果__shl函数返回self,push可以被链接,例如_= foo &lt;&lt; "bar" &lt;&lt; "baz"
【解决方案3】:

我个人会使用table.insert 函数:

table.insert(a,"b");

这使您不必遍历整个表,从而节省宝贵的资源,例如内存和时间。

【讨论】:

    猜你喜欢
    • 2017-08-22
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    • 2020-09-30
    • 2019-09-21
    • 2019-11-22
    • 2013-03-11
    相关资源
    最近更新 更多