【发布时间】:2015-02-10 14:28:52
【问题描述】:
我试图找出相当于:
foo = []
foo << "bar"
foo << "baz"
我不想想出一个递增的索引。有没有简单的方法可以做到这一点?
【问题讨论】:
-
整个文档可在lua.org/manual/5.2获得
-
哦,这真的很有帮助。谷歌一直把我指向lua.org/pil/2.5.html,这基本上没用。
我试图找出相当于:
foo = []
foo << "bar"
foo << "baz"
我不想想出一个递增的索引。有没有简单的方法可以做到这一点?
【问题讨论】:
您正在寻找 insert 函数,该函数位于主库的 table 部分。
foo = {}
table.insert(foo, "bar")
table.insert(foo, "baz")
【讨论】:
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 << "bar" << "baz"
我个人会使用table.insert 函数:
table.insert(a,"b");
这使您不必遍历整个表,从而节省宝贵的资源,例如内存和时间。
【讨论】: