小编Piz*_*ato的帖子

Lua 中逗号分隔的 return 语句如何充当函数调用?

我是 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)

lua return

4
推荐指数
1
解决办法
183
查看次数

标签 统计

lua ×1

return ×1