Lua表分析及總結

   Table表就是一個隨意插值的無序的Map集合,若是這個值沒有給出對應的key索引, 那麼默認的索引值就是這個value在table表中的順序值(默認從1開始)中間有穿插有默認索引的不計入其中且依次繼續疊加,若是給了索引值的key,那麼能夠根據key找到對應的value。
      Lua中,你能夠用任意類型的值來做數組的索引 但這個值不能爲 nil  Lua中,你也能夠用任意類型的值來做數組的內容,nil也能夠,對於Table表來講只有「引用」沒有「拷貝」的概念。

基本介紹
注意三點: 
    第一,全部元素之間,老是用逗號 "" 隔開;
    第二,全部索引值都須要用 "[""]" 括起來;若是是字符串,還能夠去掉引號和中括號; 即若是沒有[]括起,則認爲是字符串索引
    第三,若是不寫索引,則索引就會被認爲是數字,並按順序自動從1日後編;
        第四,print打印時:
               1,都是 print(表名變量[])的格式。
               2,若是是默認不寫索引的,表名變量後的中括號裏標記的是對應從1增加的索引值。
               3,若是表裏索引是字符串的形式能夠直接使用:表名變量.字符串 或者 表名變量["字符串"]的形式。
               4,若是表裏索引是其餘格式就直接使用:表名變量[索引值]便可。
一個持有Table的變量和Table之間是沒有固定的關聯性的。

#操做符對一個table引用來操做的話,返回這個table的 「最後」一個索引的值 但不必定是長度。#操做符是以nil值爲結尾的。但是table是能夠有空隙的。便可以只初始化一、二、3和10號索引的值,其餘未初始化的值,跟全局變量同樣處理爲nil,這時對這個table進行長度操做符操做或者table.getn函數,獲得的結果是索引3而不是10。若是想得到真正最後一個索引的值.能夠用 table.maxn 獲取。僅在索引值爲正數有效。若是是負數,則都是返回0。

簡單識記:  
a = {0, y =1,label = "console"},a中的value 0 對應的索引就是1,a.y和a["y"]對應的是同一個值1. 
a.x = 10 等同於 a["x"] = 10.就是往table任意的位置上放一個key=x且value=10的記錄。 
Table表中最多見的兩種方式: 
列表部分和記錄部分。 
{x=10,y=45;"one","two","three"}分號前面是列表部分(有對應索引值的)後面是記錄部分(默認索引且從1開始的) 
相似於這樣的操做,其實就是自動將.後的字段默認成表中的屬性。
相關文章
相關標籤/搜索