詞法定界指:巢狀的函式可以訪問他外部函式中的變數。
第一類值指:
可以被存放在變數中,
也可以存放在表中,
可以作為函式的引數,
還可以作為函式的返回值。
的值
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.完成指定的任務,這時候函式這位呼叫...