lua 基礎

table 中的可以元素(類似數組)或者鍵值對,實際上lua內部採用哈希表和數組分別保存鍵值對、普通值,所有不推薦混合使用這兩種賦值方式。

table中不要使用nil元素

table判斷是否爲空

function isTableEmpty(t)
    return t == nil or next(t) == nil
end

注意: next 指令是不能被 LuaJIT 的 JIT 編譯優化,並且 LuaJIT 貌似沒有明確計劃支持這
個指令優化,在不是必須的情況下,儘量少用。


cjson.encode(nil) = null

cjson.decode(nil)= nil


4.函數的參數

按值傳遞

Lua函數的參數大部分是按值傳遞的。值傳遞就是調用函數時,實參把它的值通過賦值運算傳遞給形參,然後形參的改變和實參就沒有關係了。在這個過程中,實參是通過它在參數表中的位置與形參匹配起來的。

在調用函數的時候,若形參個數和實參個數不同時,Lua會自動調整實參個數。調整規則:若實參個數大於形參個數,從左向右,多餘的實參被忽略;若實參個數小於形參個數,從左向右,沒有被實參初始化的形參會被初始化爲nil。


變長參數

上面函數的參數都是固定的,其實Lua還支持變長參數。若形參爲 ... ,表示該函數可以接收不同長度的參數。訪問參數的時候也要使用 ...


具名參數

Lua 還支持通過名稱來指定實參,這時候要把所有的實參組織到一個table中,並將這個table作爲唯一的實參傳給函數。

按址傳遞

    當函數參數是table類型時,傳遞進來的是table在內存中的地址,這時在函數內部對table所做的修改,不需要使用return返回,就是有效的。

    在常用基本類型中,除了table是按址傳遞類型外,其它的都是按值傳遞參數。

    用全局變量來代替函數參數的不好編程習慣應該被抵制,良好的編程習慣應該是減少全局變量的使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章