Lua - table.insert 不起作用

发布于 2024-11-09 09:29:29 字数 336 浏览 0 评论 0原文

为什么 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

我认为一般来说

af(a,x) 等于 a:f(x)卢阿

Why isn't t:insert(9) working in Lua?
(I want to append a value of 9 to the end of the table)

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

I thought in general

a.f(a,x) is equalivant to a:f(x) in Lua

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

冬天的雪花 2024-11-16 09:29:29

虽然 a:f(x) 确实只是 af(a,x) 的语法糖,但第二种语法并不是您所拥有的。向后思考:

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

所以您所说的语法规则将是 t.insert(t, 9)

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

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

While it's true that a:f(x) is simply syntactic sugar for a.f(a,x) that second syntax is not what you have there. Think it through backwards:

The function call you tried is t:insert(9)

So the syntax rule you stated would be t.insert(t, 9)

But the working function call is table.insert(t, 9)

See how the last two aren't the same? So the answer to your question is that insert() isn't a function contained in t, it's in "table".

撩起发的微风 2024-11-16 09:29:29

由于 table 方法尚未与 t 关联,因此您必须通过 table.insert 语法直接调用它们,或者定义t 上的元表为 table,例如:

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

Since the table methods haven't been associated with t, you either have to call them directly through the table.insert syntax, or define the metatable on t to be table, e.g.:

> t = {1,2,3}
> setmetatable(t, {__index=table})
> t:insert(9)
> print (t[4])
9
情愿 2024-11-16 09:29:29

您试图调用表中名为 insert 的条目,但是在表 t 中没有任何条目。如果你想让它工作,你可以做的是将插入条目设置为 table.insert

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

You're trying to call an entry in your table called insert, however, in table t, there is none. If you want it to work, what you could do is to set the insert entry to table.insert

t = {insert = table.insert, 1, 2, 3}
t:insert(9)
print(t[4]) -- 9, as you'd expect
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文