根據表的結構不同,採取的方法也有很多。沒有一種單一的演算法對所有情況都能很好地解決問題。簡單的表不僅需要簡單的演算法而且輸出檔案也需要看起來美觀。
第一次嘗試如下:
function serialize (o)
if type(o) == "number" then
io.write(o)
elseif type(o) == "string" then
io.write(string.format("%q", o))
elseif type(o) == "table" then
io.write("\n")
else
error("cannot serialize a " .. type(o))
endend
io.write(" ", k, " = ")
改為
io.write(" [")
serialize(k)
io.write("] = ")
這樣一來,我們改善了我們的函式的健壯性,比較一下兩次的結果:
-- result of serialize
-- 第乙個版本
-- 第二個版本
還可以通過測試每一種情況,看是否需要方括號。
原文:lua乙個小巧指令碼語言學習筆記
lua教程儲存不帶迴圈的table-49
xLua C 訪問Lua之訪問Lua的table
1.對映到普通class或struct 定義乙個class,有對應於table的字段的public屬性,而且有無引數建構函式即可,比如對於可以定義乙個包含public int f1 public int f2 的class。這種方式下xlua會幫你new乙個例項,並把對應的字段賦值過去。table的...
Lua程式設計中使用巢狀迴圈的使用教程
lua程式語言允許使用乙個迴圈內嵌另乙個迴圈。下文將介紹幾個例子來說明這一概念。語法在lua中巢狀迴圈語法語句如下 複製 如下 for init,max min value,increment do for init,max min value,increment do statement s en...
Lua的泛型for迴圈
泛型for的語義 泛型for比較複雜,它在迴圈過程內儲存了迭代器函式。它實際上儲存著3個值 乙個迭代器函式 乙個恆定狀態和乙個控制變數。接下來,分別進行總結。泛型for的語法如下 for indo end 其中,是乙個或多個變數名的列表,以逗號分隔 是乙個或多個表示式的列表,同樣以逗號分隔。通常表示...