gpt4 book ai didi

for-loop - Lua 中的奇怪 "attempt to call a table value"

转载 作者:行者123 更新时间:2023-12-04 00:47:04 30 4
gpt4 key购买 nike

以下代码片段:

for weight, item in itemlist do
weight_total=weight_total+weight
end

导致该代码段第一行出现“尝试调用表值”错误。为什么?

Itemlist 是一个权重表和字符串表,例如:
local itemlist = {
{4,"weapon_pistol"},
{2,"weapon_357"},
...

据我所知,没有任何东西被调用;为什么会出现这个错误?

最佳答案

通用for需要 3 个参数:一个可调用的值,一些重复传递给它的值,以及迭代开始的键。
Stock lua 不会在传递给 for 的第一个值上调用对,如果它不可调用,尽管有些衍生工具会这样做。

因此,您必须使用 ipairs(itemlist) , pairs(itemlist) , next, itemlist或任何你想要的(最后两个具有相同的行为,并且是大多数衍生产品所做的)。

例如,一个迭代器解包值序列:

function awesome_next(t, k)
k, t = next(t, k)
if not t then return end
return k, table.unpack(t)
end

for k, a, b, c, d in awesome_next, t do
end

关于for-loop - Lua 中的奇怪 "attempt to call a table value",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23350281/

30 4 0