Lua - table.insert无效

时间:2011-05-25 15:27:15

标签: insert lua lua-table

为什么t:insert(9)无法在 Lua 中工作? (我想在表的末尾添加值9)

t = {1,2,3}
table.insert(t, 9)  -- works (appends 9 to end of table t)
t:insert(9)         -- does NOT work

我一般认为

a.f(a,x)与Lua中的a:f(x)相等

3 个答案:

答案 0 :(得分:16)

虽然a:f(x)只是a.f(a,x)的语法糖,但第二种语法不是你所拥有的。通过倒退来思考:

您尝试过的函数调用是t:insert(9)

因此,您声明的语法规则为t.insert(t, 9)

但是工作函数调用是table.insert(t, 9)

看看最后两个是不一样的?所以你的问题的答案是insert()不是t中包含的函数,它在“table”中。

答案 1 :(得分:11)

由于table方法尚未与t相关联,您必须通过table.insert语法直接调用它们,或者在t上定义元数据是table,例如:

> t = {1,2,3}
> setmetatable(t, {__index=table})
> t:insert(9)
> print (t[4])
9

答案 2 :(得分:3)

你试图在你的表中调用一个名为insert的条目,但是,在表t中,没有条目。如果您希望它工作,您可以做的是将insert条目设置为table.insert

t = {insert = table.insert, 1, 2, 3}
t:insert(9)
print(t[4]) -- 9, as you'd expect