我是 Lua 的新手,并试图弄清楚下面的squares函数中的return语句是如何在以下代码片段中使用的:
function squares(iteratorMaxCount)
return square,iteratorMaxCount,0
end
Run Code Online (Sandbox Code Playgroud)
return 语句中的square参数引用了具有以下签名的函数:
function square(iteratorMaxCount,currentNumber)
Run Code Online (Sandbox Code Playgroud)
让我困惑的是return语句看起来像是返回三个值。然而,我认为它实际上在做的是将iteratorMaxCount和0作为参数传递给square函数调用。
谁能向我解释这种语法发生了什么?这如何作为函数调用而不是返回三个值?在我看来,似乎 return 语句应该写成return square(iteratorMaxCount, 0)而不是return square, iteratorMaxCount, 0。我知道这显然是错误的,但我不知道为什么。
我试过搜索 Lua 手册、Lua 参考指南和 Google 搜索,但似乎找不到任何解释这种特定语法的内容。任何人都可以指出我正确的方向吗?
提前致谢。
通过Tutorialspoint下面的完整代码
function square(iteratorMaxCount,currentNumber)
if currentNumber<iteratorMaxCount
then
currentNumber = currentNumber+1
return currentNumber, currentNumber*currentNumber
end
end
function squares(iteratorMaxCount)
return square,iteratorMaxCount,0
end
for i,n in squares(3)
do
print(i,n)
end
Run Code Online (Sandbox Code Playgroud)