lua學習 lua函式理解

2021-10-06 15:58:59 字數 824 閱讀 3500

詞法定界指:巢狀的函式可以訪問他外部函式中的變數。
第一類值指:

可以被存放在變數中,

也可以存放在表中,

可以作為函式的引數,

還可以作為函式的返回值。

的值

function foo (x)

return 2*x

end

這段**實際上就等效於

foo = function (x) 

return 2*x

end

所以實際上lua中的函式宣告語法實際上是乙個函式宣告+變數賦值過程,注意,lua中函式也是乙個變數型別,function在lua中是第一類值

lua中函式訪問的外部區域性變數被稱作 upvalue,所以函式實際上是函式本身和它的upvalue。

lua是可以做到正確的函式尾呼叫的

function f(x)

return g(x)

end

如上所示,f(x)的最後乙個動作是呼叫g(x),這種情況下,g(x)不需要使用額外的棧,但並不是所有語言都可以做到正確的尾呼叫的

尾呼叫有一點需要注意,如果是函式遞迴尾呼叫,這種情況下,在lua中是永遠也不會導致棧溢位的,如果執行緒卡死就需要額外排查一下是不是有地方無限尾遞迴了

注意,這種情況不是尾呼叫

function f (x)

g(x)

return

end

Lua基礎學習 Lua函式

函式主要用途 1 是作為呼叫語句使用。2 作為賦值語句的表示式使用。語法 區域性 全域性 function fun name 引數列表 函式體endfunction 定義函式關鍵字注意 1 在使用 lua 函式 變數時一定要先定義函式 變數 2 lua 函式不支援引數預設值,可以使用 or 解決。如...

Lua學習筆記函式

數字型for 的格式,exp3預設為1 for var exp1 exp2 exp3 do 執行體 end泛型for迭代的型別,標準庫中提供了幾種迭代器 io.lines 用於迭代檔案中每行 pairs 迭代table中元素 ipairs 迭代 陣列 元素 string.gmatch 迭代字串中單詞...

Lua學習(三) 函式

lua學習 函式 在lua中,函式是對語句和表示式進行抽象的主要方法。既可以用來處理一些特殊的工作,也可以用來計算一些值。lua 提供了許多的內建函式,你可以很方便的在程式中呼叫它們,如print 函式可以將傳入的引數列印在控制台上。lua 函式主要有兩種用途 1.完成指定的任務,這時候函式這位呼叫...