如何附加到Lua中的表中

dre*_*ish 33 lua lua-table

我试图找出相当于:

foo = []
foo << "bar"
foo << "baz"
Run Code Online (Sandbox Code Playgroud)

我不想提出递增索引.是否有捷径可寻?

rse*_*thc 46

您正在寻找的insert功能,在发现table主库的部分.

foo = {}
table.insert(foo, "bar")
table.insert(foo, "baz")
Run Code Online (Sandbox Code Playgroud)


lhf*_*lhf 34

foo = {}
foo[#foo+1]="bar"
foo[#foo+1]="baz"
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为#运算符计算列表的长度.空列表的长度为0,等等.

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

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

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

  • 它比`table.insert`略快. (4认同)
  • 值得注意的是,如果`__shl`函数返回`self`,push可以被链接,例如`_ = foo <<"bar"<<"baz"` (3认同)

ASt*_*her 6

我个人会使用这个table.insert功能:

table.insert(a,"b");
Run Code Online (Sandbox Code Playgroud)

这样您就不必遍历整个表,从而节省了宝贵的资源,如内存和时间.