aardio中只有一種數據結構,就是表,表中省略鍵值的,即爲數組:數組
1.名字空間不只是一個表,仍是定義了一個語句塊,在table裏,只能用鍵和值(鍵值對),不容許使用變量和語句塊。由於鍵值具備惟一性,不會出現重複的鍵,一個鍵也不可能指向多個不一樣的值。雖然namespace和table都是用{}來界定的,可是語句塊是「最小的執行指令的代碼」,一個語句由操做數(常量)、操做符(作字符串組合的++和作判斷相等的==)、標識符、關鍵字等組成。標識符包括命名常量和變量;字面常量包括字符串和數值。語句塊能夠限制局部變量的做用域。數據結構
2.聲明語句:包含變量聲明和局部變量聲明,API函數聲明 。通常普通的名字空間的成員變量是不須要聲明的。而局部變量是須要聲明的。ide
3.在global下定義的變量,能夠在此名字空間內任意語句塊下使用,若是跨語句塊,則要用global方式。詳見5函數
4.定義一個表tabuser,若是先用namespace定義,再用table定義,那麼這個tabuser會被覆蓋;而反過來,namespace在後的話,namespace會現作檢測,若是看到以前已定義過,則作打開操做,打開這個table,而後作附加。spa
5.在一個名字空間內部調用這個名字空間的屬性的時候,要用self來標識當前名字空間,且訪問外部的屬性的,要用global或者..索引
即,語句塊要從一個抽屜裏訪問本身抽屜的屬性,用self,訪問外部總體抽屜的屬性,用global。ci
例如:作用域
namespace tabuser{ a1 = "aa"; a2 = "bb"; a3 = "cc"; for (i=1;3;1){ ..console.log(self["a"+i]) } }
6.在表中,若是不指明鍵值,會變成數組array。數組,成員的索引鍵是數值,是從1開始且是連續的數的值。則就是說,有一個隱藏的[1]、[2]....這樣的鍵值:rem
var list={ "aa"; "bb"; "cc"; }
至關於:字符串
var list={ [1] = "aa"; [2] = "bb"; [3] = "cc"; [999] = "cisco" }
這時候,若是用[99]這樣的鍵值代碼來指定,則能夠建立一個不連續的表。可是在這種不連續的狀況下計算獲取這個表有多少個連續的成員的時候,會不許,由於用#TAB來取的話,只會取出連續的鍵值對的個數,不連續的,會被忽略。因此若是是數組模式,不要包含不連續的值。而後用table的名字用下標的方式來取值,且,這個下表[]裏面還可使用變量。如a[i]這樣的。
7.數組的操做:
table.range(TAB)來取出最大最小索引
#TAB 來獲取這個表有多少個連續的成員
table.count(TAB) 統計表中全部成員的個數。包括不連續的,可是效率很低,由於要遍歷
若是隻是判斷這個表是否是空的,能夠用table.next。
table.next(TAB) 返回下一個成員,返回一個鍵,一個值。
var k,v = table.next(A)
var k2,v2 = table.next(a,k)…………這樣就是在不停的迭代。若是是一個空表,則什麼都不會返回。至關於在if判斷中,獲得了「假」。
table.push(ARR,"值1",「值2」) 在數組的最後面追加參數。
table.pop(TAB,n)在數組的尾部彈出n個值。同時,n能夠用來作賦值:
var k,v = table.pop(TAB,2) 移除幾個函數,就會獲得幾個返回值。
table.insrt(ARR,「插入到n前面的值」,n) 用來在n前面插入一個值。
table.remove(ARR,n)在指定的位置移除,並返回。var a = table.remove(ARR,2)就是把ARR這個數組的第二個值移除並返回。