For loop 为什么这个代码段可以';而“print(square(3,0))”可以吗?
为什么这个代码段不能编译,而For loop 为什么这个代码段可以';而“print(square(3,0))”可以吗?,for-loop,lua,For Loop,Lua,为什么这个代码段不能编译,而打印(square(3,0))可以吗 function square(iteratorMaxCount,currentNumber) if currentNumber<iteratorMaxCount then currentNumber = currentNumber+1 return currentNumber, currentNumber*currentNumber end end print(squ
打印(square(3,0))
可以吗
function square(iteratorMaxCount,currentNumber)
if currentNumber<iteratorMaxCount
then
currentNumber = currentNumber+1
return currentNumber, currentNumber*currentNumber
end
end
print(square(3,0))
for i,n in square(3,0)
do
print(i,n)
end
对于平方(3,0)中的i,n
相当于对于1,1中的i,n
,这意味着您试图调用1
,这不是一个函数,并导致错误尝试调用数值
for循环定义中
中之后表达式列表中的第一个值需要是一个函数,例如处理表或数组时使用的对或IPAIR。如果在代码中使用某种自定义迭代器,如square
,则需要创建一个函数,该函数将迭代器存储的限制定义为up值,并返回一个匿名函数,执行此操作的函数称为迭代器工厂
function square(iteratorMaxCount,currentNumber)
return function()
if currentNumber<iteratorMaxCount then
currentNumber = currentNumber+1
return currentNumber, currentNumber*currentNumber
end
end
end
print(square(3,0)())
print(square(3,0))
for i,n in square(3,0) do
print(i,n)
end
建议如下:
相关主题:
将正方形(3,0)中i,n的
替换为正方形(3,0)中i,n的。
@Egor Skriptunoff您能回答这个问题吗?否则它将永远没有正式的答案。@AlexanderMashin-我没有答案。我的评论只是一个暗示。答案应该包括解释Lua中的泛型for循环是如何工作的。请随意写下答案。
function square(iteratorMaxCount,currentNumber)
return function()
if currentNumber<iteratorMaxCount then
currentNumber = currentNumber+1
return currentNumber, currentNumber*currentNumber
end
end
end
print(square(3,0)())
print(square(3,0))
for i,n in square(3,0) do
print(i,n)
end
for i,n in square,3,0 do
print(i,n)
end