在c語言或其他靜態語言中,會對函式名進行檢查,不允許重名的函式出現,但在lua,重名的函式是允許出現的,這就給我們的編碼埋下一些隱患。當專案達到一定規模的時候,就很難保證不出現重名函式。那重名的函式會導致什麼問題呢?我們看下面的**: 1
2
3
4
5
6
7
8
9
10
11
function
fun_a()
('a')
endfun_a()
--**********> a
function
fun_a()
('b')
endfun_a()
--**********> b
原來lua虛擬機會把lua中的函式名都作為區域性變數,存在區域性變數表裡,並在棧上開闢乙個暫存器空間,在執行期,將新建乙個closure,並存在已保留的暫存器裡面。當有乙個新定義的函式加入時,會新建乙個closure,lua會把它壓入棧,在呼叫該函式的時候,就會從棧頂開始找,找到匹配的函式名則返回。
c語言函式重名問題
問題 linux下程式鏈結動態c庫總是失敗,提示庫中的幾個函式出現問題。苦找無果,最後發現原因 庫內兩個c函式重名。結論 最好不要重名,但可以通過一些限制避免這個問題。提問 c語言 可以函式過載嗎?answer 可以實現。我參考了幾種說法。1,c語言不支援函式過載。同一作用區域不可以有函式重名,但不...
Lua 函式 函式
在lua中,函式是一種對語句和表示式進行抽象的主要機制。函式既可以完成某項特定的任務,也可以只做一些計算並返回結果。lua具有一項非常於總不同的特徵,允許函式返回多個結果 s,e string.find hello lua users lua print s,e 7 9 以lua編寫的函式同樣可以返...
Lua基礎學習 Lua函式
函式主要用途 1 是作為呼叫語句使用。2 作為賦值語句的表示式使用。語法 區域性 全域性 function fun name 引數列表 函式體endfunction 定義函式關鍵字注意 1 在使用 lua 函式 變數時一定要先定義函式 變數 2 lua 函式不支援引數預設值,可以使用 or 解決。如...