Lua中为何table.insert操作失效?
- 内容介绍
- 文章标签
- 相关推荐
本文共计414个文字,预计阅读时间需要2分钟。
在Lua中,使用`t:insert(9)`直接向表`t`的末尾添加值9是不正确的。这是因为Lua的`table.insert`函数不接受索引作为参数,它只接受表名和要插入的值。
正确的方式是使用`table.insert(t, 9)`,这将把值9添加到表`t`的末尾。
下面是修改后的代码示例:
lua-- 我想在表的末尾附加值9t={1, 2, 3} -- 初始表table.insert(t, 9) -- 正确插入值9到表t的末尾print(t) -- 输出: 1, 2, 3, 9
另外,你提到的`a.f(a, x)`在Lua中相当于`a[f(x)]`,其中`f(x)`是一个表达式,而`f`不是Lua中的内置函数。在Lua中,你可以使用表构造器`{[key]=value}`来创建这样的结构。例如:
luaa={f=function(x) return x end} -- 定义了一个表a,其中包含一个函数fprint(a.f(2)) -- 输出: 2
为什么不是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)等于a:Lua中的f(x)
虽然a:f(x)只是a.f(a,x)的语法糖,但第二种语法并不是你所拥有的.通过倒退来思考:你试过的函数调用是t:insert(9)
所以你说的语法规则是t.insert(t,9)
但是工作函数调用是table.insert(t,9)
看看最后两个是不一样的?所以你的问题的答案是insert()不是t中包含的函数,它在“table”中.
本文共计414个文字,预计阅读时间需要2分钟。
在Lua中,使用`t:insert(9)`直接向表`t`的末尾添加值9是不正确的。这是因为Lua的`table.insert`函数不接受索引作为参数,它只接受表名和要插入的值。
正确的方式是使用`table.insert(t, 9)`,这将把值9添加到表`t`的末尾。
下面是修改后的代码示例:
lua-- 我想在表的末尾附加值9t={1, 2, 3} -- 初始表table.insert(t, 9) -- 正确插入值9到表t的末尾print(t) -- 输出: 1, 2, 3, 9
另外,你提到的`a.f(a, x)`在Lua中相当于`a[f(x)]`,其中`f(x)`是一个表达式,而`f`不是Lua中的内置函数。在Lua中,你可以使用表构造器`{[key]=value}`来创建这样的结构。例如:
luaa={f=function(x) return x end} -- 定义了一个表a,其中包含一个函数fprint(a.f(2)) -- 输出: 2
为什么不是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)等于a:Lua中的f(x)
虽然a:f(x)只是a.f(a,x)的语法糖,但第二种语法并不是你所拥有的.通过倒退来思考:你试过的函数调用是t:insert(9)
所以你说的语法规则是t.insert(t,9)
但是工作函数调用是table.insert(t,9)
看看最后两个是不一样的?所以你的问题的答案是insert()不是t中包含的函数,它在“table”中.

