如何在Lua中向表格追加数据?

我正在尝试找到以下代码的等效写法:

foo = []
foo << "bar"
foo << "baz"

我不想用增加的索引来实现。有没有简单的方法可以做到这一点?

点赞
用户1917534
用户1917534

你正在寻找位于主库的table部分中的insert函数。

foo = {}
table.insert(foo, "bar")
table.insert(foo, "baz")
2014-12-11 23:13:21
用户107090
用户107090
foo = {}
foo[#foo+1]="bar"
foo[#foo+1]="baz"

这段代码的作用是将字符串 "bar" 和 "baz" 分别存入表 foo 中,使用了表的特性,通过 # 运算符来计算表的长度,将新元素插入到表末尾。

如果使用 Lua 5.3+,可以实现类似的功能:

foo = {}
setmetatable(foo, { __shl = function (t,v) t[#t+1]=v end })
_= foo << "bar"
_= foo << "baz"

这段代码使用了元表,通过在元表中定义一个名为 __shl 的函数来实现左移运算符重载,将新元素插入到表末尾。

需要注意的是,在 Lua 中,表达式和语句是有区别的,表达式需要以某种方式被使用。

2014-12-11 23:14:18
用户2422013
用户2422013

我个人会使用 table.insert 函数:

table.insert(a,"b");

这样可以避免你遍历整个表格,从而节省宝贵的资源,例如内存和时间。

2014-12-11 23:15:38