Я новичок в Lua и пытаюсь выяснить, как выражение return в приведенной ниже функции squares используется в следующем фрагменте кода:
function squares(iteratorMaxCount)
return square,iteratorMaxCount,0
end
Параметр square в операторе возврата относится к функции со следующей сигнатурой:
function square(iteratorMaxCount,currentNumber)
Меня смущает то, что return оператор выглядит как будто он возвращает три значения. То, что я думаю на самом деле делает, однако передает iteratorMaxCount и 0 в качестве аргументов для вызова функции square .
Может кто-нибудь объяснить мне, что происходит с этим синтаксисом? Как это служит вызовом функции, а не возвращает три значения? На мой взгляд, кажется, что оператор return должен быть записан квадрат возврата (iteratorMaxCount, 0) в отличие от квадрат возврата, iteratorMaxCount, 0 . Я знаю, что это явно неправильно, но я не могу понять, почему.
Я пробовал искать в Lua Manual, Lua Reference Guide и искать в 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