问题描述
|
为什么ѭ0在Lua不起作用?
(我想在表的末尾附加值9)
t = {1,2,3}
table.insert(t,9) -- works (appends 9 to end of table t)
t:insert(9) -- does NOT work
我一般认为
Lu2ѭ等于Lua中to3ѭ
解决方法
的确,ѭ3仅是ѭ2syn的语法糖,第二种语法却不是您所拥有的。倒想一下:
您尝试的函数调用是“ 0”
所以你说的语法规则是
t.insert(t,9)
但是工作函数调用是table.insert(t,9)
看看最后两个不一样吗?因此,您的问题的答案是insert()不是t
中包含的函数,而是位于\“ table \”中。
,由于table
方法尚未与t
相关联,因此您要么必须通过table.insert
语法直接调用它们,要么将t
上的元表定义为table
,例如:
> t = {1,2,3}
> setmetatable(t,{__index=table})
> t:insert(9)
> print (t[4])
9
,您正在尝试在表中调用一个名为insert的条目,但是在表t中没有任何条目。如果您希望它起作用,您可以将插入项设置为table.insert。
t = {insert = table.insert,1,3}
t:insert(9)
print(t[4]) -- 9,as you\'d expect