【发布时间】:2016-02-28 10:22:16
【问题描述】:
将数字转换为表格的最有效方法是什么?或者是否可以制作一个没有循环的表格?
local t = 10 -- given number
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} -- result
更新:t 变量是可变数字,我想为每个值。
t = 3
function foreach(f, t)
for i, v in ipairs(t) do
f(v)
end
end
foreach(print, t)
1
2
3
我需要在 Lua 中使用new Array(n) 的最快方式。还是没有任何意义?
【问题讨论】:
-
你能和我们分享一下,你为什么想要这样一张桌子?如果您的唯一目标是拥有一个长度为 10 但不一定有 10 个元素的表格,则可以使用
table.setn。 -
您可以将
lua_createtatble导出到Lua。 table.setn 已被贬低,只是设置n=x但不分配内存(我不确定)。但我真的建议在实施任何实施之前进行性能测试。 -
@SebastianHoffmann 感谢您的评论。我想在这个例子中避免双循环。但是我得到了
foo = {}; print(table.setn(foo, 10))stdin:1:尝试调用字段'setn'(一个零值)堆栈回溯:stdin:1: in main chunk [C]: in ? ` -
@moteus 感谢您的评论。这对我来说听起来很难。我正在尝试找到
lua_createtable方式。 -
@TomBlodget:是的,但是您不能从 Lua 脚本 访问实现的“内部数据结构”。 OP 在询问您可以从 Lua 中做什么。