表与数组

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这个数组的第二个值移除并返回。

相关文章
相关标签/搜索