Lua (十)函式尾呼叫

2021-10-06 23:20:04 字數 792 閱讀 8666

概念:在乙個函式a中使用return返回另乙個函式b(b函式呼叫是a函式的最後乙個動作)。

尾呼叫不占用「堆疊」空間,不會出現「棧溢位」,可以起到優化儲存空間的作用。

function fa()

return math.abs(-1)

endfunction fb()

return fa()

endprint(fb())

--->

1

function fun(num)

if num > 0 then

print(num)

return fun(num-1)

else

return "end"

end

endprint(fun(5))

--->54

321end

function funa()

return funb()

endfunction funb()

return 1,2

enda,b = funb()

print(a)

print(b)

function func()

return (fund())

endfunction fund()

return 1,2

endc,d = func()

print(c)

print(d)

--->12

1nil

Lua函式的尾呼叫

1.尾呼叫 所謂尾呼叫,就是乙個函式返回另乙個函式的返回值 如下 function f return g en 因為呼叫g 後,f 中不再執行任何 所以不需要保留f 的呼叫桟資訊 lua做了這樣的優化,稱為 尾呼叫消除 g 返回後,控制點直接返回到呼叫f 的地方。這種優化對尾遞迴非常有益,通常遞迴意...

lua 函式深入 閉合函式,區域性函式,尾呼叫

lua函式具有兩大特徵 函式作為第一類值,函式具有特定的詞法域 lexical scoping 所謂第一類值 代表函式和其他傳統型別的值是等價的 例如數字和字串 函式可以同他們一樣儲存在變數,table中,可以作為實參傳遞,可以作為函式返回值。對於第一類值,需要講明,函式和其他值一樣都是匿名的,是沒...

呼叫Lua函式

翻譯自http gamedevgeek.com tutorials calling lua functions 呼叫lua函式 這是lua指令碼語言教程系列之二。在第一篇中,我們學習了在windows和linux下編譯並執行 hello,world 程式。如果你沒有看過,請參考lua入門一文。這篇文...