表与数组

aardio中只有一种数据结构,就是表,表中省略键值的,即为数组:

1.名字空间不仅是一个表,还是定义了一个语句块,在table里,只能用键和值(键值对),不允许使用变量和语句块。因为键值具有唯一性,不会出现重复的键,一个键也不可能指向多个不同的值。虽然namespace和table都是用{}来界定的,但是语句块是“最小的执行指令的代码”,一个语句由操作数(常量)、操作符(做字符串组合的++和做判断相等的==)、标识符、关键字等组成。标识符包括命名常量和变量;字面常量包括字符串和数值。语句块可以限制局部变量的作用域。

2.声明语句:包含变量声明和局部变量声明,API函数声明 。一般普通的名字空间的成员变量是不需要声明的。而局部变量是需要声明的。

3.在global下定义的变量,可以在此名字空间内任意语句块下使用,如果跨语句块,则要用global方式。详见5

4.定义一个表tabuser,如果先用namespace定义,再用table定义,那么这个tabuser会被覆盖;而反过来,namespace在后的话,namespace会现做检测,如果看到之前已定义过,则做打开操作,打开这个table,然后做附加。

5.在一个名字空间内部调用这个名字空间的属性的时候,要用self来标识当前名字空间,且访问外部的属性的,要用global或者..

即,语句块要从一个抽屉里访问自己抽屉的属性,用self,访问外部整体抽屉的属性,用global。

例如:

namespace tabuser{
	a1 = "aa";
	a2 = "bb";
	a3 = "cc";

	for (i=1;3;1){
		..console.log(self["a"+i])
	}

}

6.在表中,如果不指明键值,会变成数组array。数组,成员的索引键是数值,是从1开始且是连续的数的值。则就是说,有一个隐藏的[1]、[2]....这样的键值:

var list={
	"aa";
	"bb";
	"cc";
}

相当于:

var list={
	[1] = "aa";
	[2] = "bb";
	[3] = "cc";
}

这时候,如果用[99]这样的键值代码来指定,则可以创建一个不连续的表。但是在这种不连续的情况下计算获取这个表有多少个连续的成员的时候,会不准。

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

时间: 2024-11-29 07:21:01

表与数组的相关文章

巧妙的邻接表(数组实现)

之前我们介绍过图的邻接矩阵存储法,它的空间和时间复杂度都是N2,现在我来介绍另外一种存储图的方法:邻接表,这样空间和时间复杂度就都是M.对于稀疏图来说,M要远远小于N2.先上数据,如下. 4 5 1 4 9 4 3 8 1 2 5 2 4 6 1 3 7 第一行两个整数n m.n表示顶点个数(顶点编号为1~n),m表示边的条数.接下来m行表示,每行有3个数x y z,表示顶点x到顶点y的边的权值为z.下图就是一种使用链表来实现邻接表的方法. 上面这种实现方法为图中的每一个顶点(左边部分)都建立了

beego数据库orm操作数据表返回数组

1.0 数据表模型(mode) func GetMyads(zoneid string) ([]orm.ParamsList, error) { tidNum, err := strconv.ParseInt(zoneid, 10, 32) if err != nil { return nil, err } //查询数据表 o := orm.NewOrm() var lsits []orm.ParamsList num, err := o.Raw("SELECT * FROM `oepre_my

顺序表与数组的区别和联系

顺序表是在计算机内存中以数组的形式保存的线性表. 顺序表是指用一组地址连续的存储单元依次存储数据元素的线性结构.线性表采用顺序存储的方式存储就称之为顺序表,顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中.线性表采用指针链接的方式存储就称之为链表. 线性表是从逻辑结构的角度来说的,除了头和尾之外,它的每一个元素都只有一个前驱元素和一个后驱元素.各种队列(单向.双向.循环队列),栈等都是线性表的不同例子. 而数组是从物理存贮的角度来说的,线性表可以用数组存贮也可以用链表来存贮.同

7-1-图、表的数组表示法-图-第7章-《数据结构》课本源码-严蔚敏吴伟民版

课本源码部分 第7章  图 - 图.表(数组表示法) ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑        本源码引入的文件  链接? Status.h.Scanf.c.LinkQueue.c        相关

算法8:巧妙的邻接表(数组实现)

之前我们介绍过图的邻接矩阵存储法,它的空间和时间复杂度都是N2,如今我来介绍第二种存储图的方法:邻接表,这样空间和时间复杂度就都是M. 对于稀疏图来说,M要远远小于N2. 先上数据.例如以下. 1 2 3 4 5 6 4 5 1 4 9 4 3 8 1 2 5 2 4 6 1 3 7 第一行两个整数n m. n表示顶点个数(顶点编号为1~n),m表示边的条数.接下来m行表示,每行有3个数x y z.表示顶点x到顶点y的边的权值为z.下图就是一种使用链表来实现邻接表的方法. 上面这样的实现方法为图

线性表之数组描述

1.线性表的描述可以分为两种 数组描述:StaticList和DynamicList(动态数组) 链式描述 2.数组描述 数组描述方法将元素存储在一个数组中,通过一个索引以确定每个元素存储的位置 所有元素依次存储在一片连续的存储空间中 线性表中的每一个元素对应数组中的一个位置 3.创建一个数组类 要创建一个数组类必须确定数组类型和确定数组长度,所以针对以上两个问题有以下解决: 模板类 动态数组(数组空间不够的情况下动态增加数组长度) 4. StaticList类实现 使用原生数组作为顺序存储空间

JavaScript基本数据类型,函数对象,表,数组,字符串,函数调用

直接上代码了, 1 cc.Class({ 2 extends: cc.Component, 3 4 properties: { 5 6 }, 7 //JS基本数据_函数对象_表_数组_字符串_函数调用 8 onLoad:function () { 9 //基本数据类型 10 //1整数 2 小数 3 逻辑变量真/假 cc.log();进行打印 11 console.log(1); 12 console.log(2.0); 13 console.log(true); 14 15 /*1: var

哈希表--扩展数组

pre-situation: 当哈希表变得太满时候.一个选择是扩展数组. java中数组有固定大小.而且不能扩展.编程时.只能另外创建一个更新的更大的数组.然后把旧数组的所有内容插入 新数组当中. 注意: 哈希函数根据数组大小计算给定数据项的位置. 所以这些数据项不能再放在新数组中和原有数组相同的位置上. 因此不能简单地从一个数组向另一个数组拷贝数据. 扩展后的数组容量通常是原来的两倍.实际上.因为数组容量应该是一个质数. 所以新数组要比两倍的容量多一点.

【C语言】顺序表,数组

顺序表的搭建,就是一个本身的结构,利用的是数组,开辟的内存空间大小是固定的.没有链式结构那样的开辟空间的可控性.最基本的数据结构认知. 然后我们来看看数据结构中的基本实现和思想: #include "seqList.h" #include <stdio.h> #include <assert.h> //顺序表的初始化 void InitSeqList(SeqList* seq) { int _index = 0; assert(seq); for(;_index

Lua学习笔记(四):表和数组

表 在Lua中,表(table)是十分重要的一种数据结构,实际上Lua对于复杂数据类型也仅提供了表给我们,我们通过表可以实现我们需要的大部分重要的数据结构,比如数组. table类型实现了关联数组,关联数组是一种具有特殊索引方式的数组:不仅可以通过整数来索引它,还可以使用字符串或其它类型的值(除了nil)来索引它.此外,table没有固定的大小,可以动态得添加任意数量的元素到一个table中. 在Lua中,table既不是“值”,也不是“变量”,而是对象.可以将table想象成一种动态分配的对象