Lua有人能解释一下这是怎么回事吗?
我正在学习lua,有人能解释一下这段代码是如何工作的吗Lua有人能解释一下这是怎么回事吗?,lua,Lua,我正在学习lua,有人能解释一下这段代码是如何工作的吗 table = {1, 2, 3, 4, 5} function num(table, start) table = start return function() i = i + 1 if table[i - 1] then return i - 1,[table - 1] else return nil end end for k,v in ipairs(table) d
table = {1, 2, 3, 4, 5}
function num(table, start)
table = start
return function()
i = i + 1
if table[i - 1] then
return i - 1,[table - 1]
else
return nil
end
end
for k,v in ipairs(table) do
print(k,v)
end
看起来这段代码将生成一个自定义迭代器函数。但它还没有完成,这是我对它应该是什么样子的最好猜测
tab = {1, 2, 3, 4, 5}
function num(tab, start)
local i = start or 1
return function()
i = i + 1
if tab[i - 1] then
return i - 1,tab[i - 1]
else
return nil
end
end
end
for k,v in ipairs(tab) do
print(k,v)
end
for k,v in num(tab) do
print(k,v)
end
这段代码要做的是首先循环遍历tab并打印键值对。接下来,它使用它制作的迭代器,该迭代器在它之前打印键值对
迭代器继续返回,直到返回nil。然后for循环结束。
返回i-1,[table-1]
是语法错误。你在哪里看到这个脚本的?它还缺少else
语句的end
。代码看起来很糟糕num
在其中的任何地方都没有使用;表
参数会立即分配给它,使其毫无意义i
是一个全局变量,没有在任何地方定义,因此i=i+1
将失败;正如hjpotter和lukas所指出的,它的格式不正确。此代码将为您提供1,1
2,2
,3,3
,4,4
,5,5
num
函数永远不会被调用。如果它会-它会产生错误:没有足够的end
语句。或者更早的版本-[t-1]
不是Lua的产品。嗯,它只是一个神秘的chunk=)看起来num将成为一个迭代器。我猜这不是全部的代码