【发布时间】:2019-10-31 04:44:57
【问题描述】:
我是 Lua 的新手,想弄清楚下面 squares 函数中的 return 语句是如何在以下代码 sn-p 中使用的:
function squares(iteratorMaxCount)
return square,iteratorMaxCount,0
end
return 语句中的 square 参数指的是具有以下签名的函数:
function square(iteratorMaxCount,currentNumber)
让我感到困惑的是,return 语句看起来 像是在返回三个值。然而,我认为它实际上正在做的是将 iteratorMaxCount 和 0 作为参数传递给 square 函数调用.
谁能向我解释一下这个语法发生了什么?这如何作为函数调用而不是返回三个值?在我看来,感觉好像返回语句应该写成 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
【问题讨论】:
-
我回家后会看一下我的 Lua 书,但我认为这与“通用 for 循环”语法有关。反正代码不是很清楚。